• / 42
  • 下载费用:16 金币  

第三篇习题讲解教案V2

关 键 词:
习题讲解教案V2
资源描述:
3.13.1指出下列各指令中源操作数和目的操作指出下列各指令中源操作数和目的操作 数的寻址方式:数的寻址方式: ⑴⑴ MOV BX, WORD PTR[2200H]MOV BX, WORD PTR[2200H] ⑵⑵ AAA AAA ⑶⑶ JUM 2200H JUM 2200H ⑷⑷ LES LESDI,[2100H]DI,[2100H] ⑸⑸ MOV [BX+SI+8], BX MOV [BX+SI+8], BX 3.1 3.1 解答解答 ⑴⑴ MOV BX, WORD PTR[2200H]MOV BX, WORD PTR[2200H] 源操作数:直接寻址;目的操作数:寄存器寻址源操作数:直接寻址;目的操作数:寄存器寻址 ⑵⑵ AAAAAA 源操作数:寄存器寻址源操作数:寄存器寻址AL(AL(也称隐含寻址也称隐含寻址) );目的;目的 操作数:寄存器寻址操作数:寄存器寻址 ⑶⑶ JUM 2200HJUM 2200H 程序转移段内直接寻址方式程序转移段内直接寻址方式 ⑷⑷ LESLES DI,[2100H]DI,[2100H] 源操作数:直接寻址;目的操作数:寄存器寻址源操作数:直接寻址;目的操作数:寄存器寻址 ⑸⑸ MOV [BX+SI+8], BXMOV [BX+SI+8], BX 源操作数:寄存器寻址;目的操作数:基址加变源操作数:寄存器寻址;目的操作数:基址加变 址寻址址寻址 3.23.2若若AX=0ABCDHAX=0ABCDH,,BX=7F8FHBX=7F8FH,,CF=1. CF=1. 求分别执求分别执 行行8086 CPU8086 CPU指令指令 ⑴⑴ ADDADDAX, BXAX, BX ⑵⑵ ADC ADCAX,BXAX,BX ⑶⑶ SBB SBBAX, BXAX, BX ⑷⑷ NEG NEGAXAX ⑸⑸ AND AX, BX AND AX, BX ⑹⑹ OR ORAX, BXAX, BX ⑺⑺ XOR XORAX, BXAX, BX ⑻⑻ IMUL BL IMUL BL 后,后,AXAX寄存器中的内容,并指出标志寄存器寄存器中的内容,并指出标志寄存器 SF,ZF,AF,PF,CFSF,ZF,AF,PF,CF及及OFOF的状态。的状态。 3.23.2解答解答 ⑴⑴ AX=2B5CH,AX=2B5CH,SZAPCO=001110BSZAPCO=001110B ⑵⑵ AX=2B5DH, AX=2B5DH,SZAPCO=001010BSZAPCO=001010B ⑶⑶ AX=2C3DH, AX=2C3DH,SZAPCO=001001BSZAPCO=001001B ⑷⑷ AX=5433H, AX=5433H,SZAPCO=001110BSZAPCO=001110B ⑸⑸ AX=2B8DH, AX=2B8DH,SZAPCO=00X100BSZAPCO=00X100B ⑹⑹ AX=FFCFH, AX=FFCFH,SZAPCO=10X100BSZAPCO=10X100B ⑺⑺ AX=D222H, AX=D222H,SZAPCO=10X100BSZAPCO=10X100B ⑻⑻ AX=3283H, AX=3283H,SZAPCO=XXXX11BSZAPCO=XXXX11B AX=1683H,AX=1683H,SZAPCO=XXXX11BSZAPCO=XXXX11B ( (--51)×(51)×(--113)113)==57635763 注意注意 • • NEGNEG指令指令 ––当操作数为当操作数为0 0时,执行时,执行NEGNEG指令后,指令后,C C标志才为标志才为 0 0,对其他数,对其他数, ,执行执行NEGNEG指令后,指令后,C C标志总为标志总为1 1!! • • 逻辑运输指令逻辑运输指令 ––NOTNOT指令指令 • • 不影响标志不影响标志 ––ANDAND,,OROR,,XORXOR指令指令 • • 影响影响P,S,ZP,S,Z标志,标志,A A标志未定义,标志未定义,C C,,O O标志置标志置0 0。。 IMULIMUL 格式格式1 1:: IMUL SRCIMUL SRC ØØ 标志位的影响:标志位的影响: CFCF、、 OFOF,, 其他无定义。其他无定义。 ØØ 如果乘积的高一半是低一半的符号扩展则如果乘积的高一半是低一半的符号扩展则CF=OF = 0CF=OF = 0,, 否则否则 CF = OF = 1CF = OF = 1 执行的操作:执行的操作: 字节操作:字节操作: (AX)(AX) (AL) * (SRC) (AL) * (SRC) 字操作:字操作: (DX,AX)(DX,AX) (AX) * (SRC) (AX) * (SRC) 双字操作:双字操作: (EDX,EAX)(EDX,EAX) (EAX) * (SRC) (EAX) * (SRC) ØØ 目的操作数必须是累加器目的操作数必须是累加器ALAL、、AXAX、、EAX.EAX. ØØ 源操作数是除了立即数之外的寻址方式。源操作数是除了立即数之外的寻址方式。 3.3 3.3 若若AL=78HAL=78H,,BL=87HBL=87H,, ⑴⑴求执行指令求执行指令 ADD AL,BLADD AL,BL DAADAA 之后,之后,ALAL==? ?、标志、标志AFAF==? ?、、CFCF==? ? ⑵⑵ 若执行指令若执行指令 SUB AL,BLSUB AL,BL与与DASDAS后,后,ALAL==? ?、标志、标志 AFAF==? ?、、CFCF==? ? 压缩压缩BCDBCD码加法调整指令码加法调整指令DAADAA 指令的调整方法:指令的调整方法: ØØ 如果如果AF=1AF=1或或ALAL的低四位大于的低四位大于9 9,则,则ALAL的寄存器的寄存器 内容加内容加06H06H且使且使AF = 1AF = 1。。 ØØ 如果如果CF=1CF=1或或ALAL的高四位的高四位大于大于9 9 ,则,则AHAH的寄存的寄存 器内容加器内容加60H60H且使且使CF = 1CF = 1。。 ØØ DAA DAA 执行后影响执行后影响A A、、C C、、P P、、S S、、Z Z标志,标志, 对对OFOF 未定义。未定义。 指令的调整方法:指令的调整方法: DASDAS要判断当前要判断当前ALAL和和A A标志、标志、C C标志:标志: ØØ 如果如果AF=1 AF=1 或者或者ALAL的低四位大于的低四位大于9 9,则,则ALAL的寄存器的寄存器 内容减内容减06H06H且且AF=1AF=1。。 ØØ 如果如果CF=1 CF=1 或者或者ALAL的高四位的高四位大于大于9 9 ,则,则AHAH的寄存器的寄存器 内容减内容减60H60H且且CF=1CF=1。。 DASDAS执行后,影响执行后,影响A A、、C C、、P P、、S S、、Z Z标志位,对标志位,对OO标志标志 无定义。无定义。 DASDAS压缩压缩BCDBCD码减法调整指令码减法调整指令 3.3 3.3 若若AL=78HAL=78H,,BL=87HBL=87H,, ⑴⑴求执行指令求执行指令 ADD AL,BLADD AL,BL DAADAA 之后,之后,ALAL==? ?、标志、标志AFAF==? ?、、CFCF==? ? ⑵⑵ 若执行指令若执行指令 SUB AL,BLSUB AL,BL与与DASDAS后,后,ALAL==? ?、标志、标志 AFAF==? ?、、CFCF==? ? 3.33.3解答解答 ⑴⑴ AL=65H, AF=1, CF=1AL=65H, AF=1, CF=1。。 ⑵⑵ AL=91H, AF=0, CF=1AL=91H, AF=0, CF=1。。 3.43.4指出下列指令中哪些是错误的,并指出错在何处?指出下列指令中哪些是错误的,并指出错在何处? ⑴⑴ MOV DL,[DX]MOV DL,[DX] ⑵⑵ MOV ES,2000H MOV ES,2000H ⑶⑶ SUB [BX],[SI] SUB [BX],[SI] ⑷⑷ ADD AX,[BX+CX] ADD AX,[BX+CX] ⑸⑸ XCHG DS,[2400H] XCHG DS,[2400H] ⑹⑹ DEC ES DEC ES ⑺⑺ IN AL,DX IN AL,DX ⑻⑻ OUT 1C0H,AX OUT 1C0H,AX 3.43.4指出下列指令中哪些是错误的,并指出错在何处?指出下列指令中哪些是错误的,并指出错在何处? ⑴⑴ MOV DL,[DX]MOV DL,[DX] ⑵⑵ MOV ES,2000H MOV ES,2000H ⑶⑶ SUB [BX],[SI] SUB [BX],[SI] ⑷⑷ ADD AX,[BX+CX] ADD AX,[BX+CX] ⑸⑸ XCHG DS,[2400H] XCHG DS,[2400H] ⑹⑹ DEC ES DEC ES ⑺⑺ IN AL,DX IN AL,DX ⑻⑻ OUT 1C0H,AX OUT 1C0H,AX 3.43.4解答解答 ⑴⑴ 错,错,DXDX不能作为间接寻址的寄存器。不能作为间接寻址的寄存器。 ⑵⑵ 错,立即数不能直接送给段寄存器。错,立即数不能直接送给段寄存器。 ⑶⑶ 错,两个存储单元间内容不能直接相减。错,两个存储单元间内容不能直接相减。 ⑷⑷ 错,错,CXCX寄存器不能作为变址寄存器。寄存器不能作为变址寄存器。 ⑸⑸ 错,不允许段寄存器与存储单元内容进行交换错,不允许段寄存器与存储单元内容进行交换 ⑹⑹ 错,减错,减1 1指令不能对段寄存器直接操作指令不能对段寄存器直接操作 ⑺⑺ 对对 ⑻⑻ 错,输出指令的地址若是错,输出指令的地址若是1616位,必须用位,必须用DXDX间址。间址。 3.53.5连续执行以下指令,填写执行指令的结果(连续执行以下指令,填写执行指令的结果(MEMMEM为存储器物理地址)。为存储器物理地址)。 MOV AX, 3380HMOV AX, 3380H MOV CX, 0F000HMOV CX, 0F000H MOV DS, AXMOV DS, AX MOV SI, CXMOV SI, CX SUB CX, AXSUB CX, AX; ;⑴⑴CX=CX= H , CF=H , CF= B B MOV [SI], CXMOV [SI], CX; ;⑵⑵[SI]=[SI]= H, [SI+1]=H, [SI+1]= H H SBB [SI], ALSBB [SI], AL; ;⑶⑶[SI]=[SI]= H, MEM=H, MEM= H H INC BYTE [SI]INC BYTE [SI]; ;⑷⑷[SI]=[SI]= H, ZFH, ZF、、CFCF、、PFPF== 、、 、、 B B MOV AL, 08MOV AL, 08 SBB AX, 09SBB AX, 09; ;⑸⑸AX=AX= H, CFH, CF、、AF=AF= 、、 B B AASAAS; ;⑹⑹AX=AX= H, CFH, CF、、AF=AF= 、、 B B SUB AL,68HSUB AL,68H; ;⑺⑺AL=AL= H, CFH, CF、、AF=AF= 、、 B B DASDAS; ;⑻⑻AL=AL= H H AND AL, 0FHAND AL, 0FH MOV BX,-10MOV BX,-10 NEG BXNEG BX; ;⑼⑼BX=BX= H H MOV DL, 60HMOV DL, 60H MUL DLMUL DL ; ;﹙ ﹙ ﹙ ﹙ 1010﹚ ﹚ ﹚ ﹚ AX= AX= H H OR AX, 0FF00HOR AX, 0FF00H CWDCWD ; ; ﹙ ﹙ ﹙ ﹙ 1111﹚ ﹚ ﹚ ﹚AX=AX= H H IDIV BXIDIV BX ; ; ﹙ ﹙ ﹙ ﹙ 1212﹚ ﹚ ﹚ ﹚AX=AX= H, DX=H, DX= H H MOV AH, 4CHMOV AH, 4CH INT 21HINT 21H 3.53.5解答解答 ⑴⑴CX=CX=BC80 BC80 H , CF=H , CF=0 0 B B ⑵⑵[SI]=[SI]=80 80 H, [SI+1]=H, [SI+1]=BC BC H H ⑶⑶[SI]=[SI]=00 00 H, MEM=H, MEM=42800 42800 H H ⑷⑷[SI]=[SI]=01 01 H,ZFH,ZF、、CFCF、、PFPF==0 0、、0 0、、0 0 B B ⑸⑸AX=AX=32FF11 32FF11 H, CFH, CF、、AF=AF=0 0、、1 1 B B ⑹⑹AX=AX=3109 3109 H, CFH, CF、、AF=AF=0 0、、1 1 B B ⑺⑺AL=AL=A1 A1 H, CFH, CF、、AF=AF=1 1、、0 0 B B ⑻⑻AL=AL=41 41 H H ⑼⑼BX=BX=000A 000A H H ﹙﹙ ﹙﹙ 1010﹚ ﹚ ﹚ ﹚ AX= AX=0060 0060 H H ﹙﹙ ﹙﹙ 1111﹚ ﹚ ﹚ ﹚AX=AX=FF60 FF60 H H ﹙﹙ ﹙﹙ 1212﹚ ﹚ ﹚ ﹚AX=AX=FFF0 FFF0 H, DX=H, DX=00000000 H H 3.63.6下列程序段执行后下列程序段执行后 AX=?AX=? 设数据段有设数据段有: : TABLETABLEDWDW158,258,358,458158,258,358,458 ENTRYENTRYDWDW 3 3 代码段代码段 对对DSDS初始化初始化 MOV MOV BX, OFFSET TABLEBX, OFFSET TABLE MOVMOV SI, ENTRYSI, ENTRY MOVMOV AX, [BX+SI]AX, [BX+SI] 3.63.6下列程序执行后下列程序执行后AX=?AX=? 设数据段有设数据段有: TABLE: TABLEDWDW158, 258, 358, 458158, 258, 358, 458 ENTRYENTRYDWDW 3 3 代码段代码段对对DSDS初始化初始化 MOVMOV BX, OFFSET TABLEBX, OFFSET TABLE MOVMOV SI, ENTRYSI, ENTRY MOV AX, [BX+SI]MOV AX, [BX+SI] 析析: 158=9EH, 258=102H, : 158=9EH, 258=102H, 358=166H, 458=1CAH358=166H, 458=1CAH AX=6601HAX=6601H 9E 3.73.7 将将ALAL中的中的8 8位二进制数按倒序方式重新排列位二进制数按倒序方式重新排列, ,即即 ALAL原来为原来为D7D6…D0,D7D6…D0,倒序后倒序后AL=D0D1…D7.AL=D0D1…D7. 3.7 3.7 将将ALAL中的中的8 8位二进制数按倒序方式重新排列位二进制数按倒序方式重新排列, ,即即 ALAL原来为原来为D7D6…D0,D7D6…D0,倒序后倒序后AL=D0D1…D7.AL=D0D1…D7. 3.73.7参考答案参考答案 …… MOVMOV CX, 8CX, 8 L:L:SHLSHL AL, 1AL, 1 RCRRCR BL, 1BL, 1 LOOP LLOOP L MOV AL, BLMOV AL, BL 3.8 3.8 若起始地址偏移量为若起始地址偏移量为2000H2000H的内存单元存放有的内存单元存放有100100 个个ASCIIASCII码字符码字符, ,现给这些字符添加奇偶校验位现给这些字符添加奇偶校验位(bit7),(bit7),使使 每个字符中每个字符中“ “1”1”的个数为偶数的个数为偶数, ,在顺序输出到地址为在顺序输出到地址为 100H100H的端口的端口. . 3.83.8解答解答 …… MOVMOV SI, 2000HSI, 2000H MOVMOV CX, 100CX, 100 MOVMOV DX, 100HDX, 100H NEXT2:NEXT2:MOVMOV AL, [SI]AL, [SI]; ;取字符串中字符送取字符串中字符送ALAL ANDANDAL, 0FFHAL, 0FFH; ;改变标志位改变标志位 JPEJPENEXT1NEXT1;“1”;“1”的个数为偶的个数为偶,bit7,bit7不变不变 ORORAL, 80HAL, 80H;“1”;“1”的个数为奇的个数为奇,bit7,bit7变为变为1 1 NEXT1:NEXT1:OUT DX, ALOUT DX, AL INCINCSISI LOOPLOOP NEXT2NEXT2 MOVMOV AH, 4CHAH, 4CH INTINT21H21H …… 3.93.9 若若SS=1652H, SP=2100H, AX=1234H, SS=1652H, SP=2100H, AX=1234H, BX=5678H, FR=2115,BX=5678H, FR=2115,试说明执行指令试说明执行指令 PUSHPUSHAXAX PUSHPUSHBXBX PUSHFPUSHF POPPOP CXCX POP DXPOP DX 之后之后,SP=? SS=? CX=? DX=? ,SP=? SS=? CX=? DX=? 并画图指出堆并画图指出堆 栈中各单元的内容栈中各单元的内容. . 3.93.9解答解答: :SS=1652HSS=1652H SP=20FEHSP=20FEH CX=2115HCX=2115H DX=5678HDX=5678H 栈栈栈栈中各中各单单单单元内容如下所示元内容如下所示: : 地址RAM 20FAH15 20FBH21 20FCH78 20FDH56 20FEH34 20FFH12 2100HXX EDATA SEGMENT BUFDW 1234H, 0ABCDH,9876H, …, 0DEF0H;共50个字 CONTEQU $﹣ ﹣BUF EDATA SEGMENT CODESEGMENT ①__________ START: MOV AX, EDATA ②__________ MOV CX, CONT-1 ③__________ MOV BX,ES: [DI] MOV AX, BX MIN:ADD DI, 2 CMP ES:[DI], BX ④__________ MOV BX, ES:[DI] JMP NEXT MAX:CMP ES:[DI], AX JBE NEXT ⑤__________ NEXT: LOOP MIN MOV AH, 4CH INT 21H CODE ENDS END START 期中小测: 试题一:下面程序的功能是: 在附加段地址为BUF中有一 个无符号数的字数组, 找出 最大数和最小数, 分别存放 在AX和BX寄存器中.请填空 完成该程序. EDATASEGMENT BUFDW 1234H, 0ABCDH,9876H, …, 0DEF0H;共50个字 CONT EQU $﹣ ﹣BUF EDATASEGMENT CODE SEGMENT ①ASSUME CS:CODE, ES:EDATA START:MOV AX, EDATA ②MOV ES, AX MOV CX, CONT-1 ③MOV DI, OFFSET BUF MOV BX,ES: [DI] MOV AX, BX MIN:ADD DI, 2 CMP ES:[DI], BX ④JNC MAX MOV BX, ES:[DI] JMP NEXT MAX:CMP ES:[DI], AX JBE NEXT ⑤MOV AX, ES:[DI] NEXT: LOOP MIN MOV AH, 4CH INT 21H CODE ENDS END START 试题二试题二: :编程实现编程实现, ,统计一个以统计一个以〝〝$$〞〞结尾的字符串的长度结尾的字符串的长度, , 并并 要求滤去第一个非空格字符之前的所有空格要求滤去第一个非空格字符之前的所有空格. . DATADATASEGMENTSEGMENT STRGSTRGDB ‘ ARE YOU HAPPY TODAY…DB ‘ ARE YOU HAPPY TODAY…$$’’ LENGLENGDW ?DW ? DATADATAENDSENDS CODE SEGMENTCODE SEGMENT ASSUME CS:CODE, DS:DATAASSUME CS:CODE, DS:DATA START:MOV AX,DATASTART:MOV AX,DATA MOV DS,AXMOV DS,AX MOV SI,OFFSET STRGMOV SI,OFFSET STRG XOR BX,BXXOR BX,BX;BX;BX清清0,0,存放统计的长度存放统计的长度 LOP:LOP:MOV AL, [SI]MOV AL, [SI] INC SIINC SI CMP AL, ‘ ’CMP AL, ‘ ’ JZ LOPJZ LOP NEXT:NEXT:CMP AL,‘CMP AL,‘$$’’ JZ OKJZ OK INC BXINC BX; ;若不是结束符若不是结束符, ,长度加长度加1 1 MOV AL,[SI]MOV AL,[SI] INC SIINC SI JMP NEXTJMP NEXT OK:OK:MOV LENG, BXMOV LENG, BX MOV AH, 4CHMOV AH, 4CH INT 21HINT 21H CODECODEENDSENDS END STARTEND START 第四章习题第四章习题( (参考书参考书3232位微型计算机原理位微型计算机原理) ) 4.1 4.1 已知数据段有已知数据段有: : FIRSTFIRSTDBDB12H, 34H12H, 34H SECONDSECONDDBDB56H, 78H56H, 78H (1)(1)要求采用传送指令编一段程序要求采用传送指令编一段程序, , 实现实现FIRSTFIRST和和SECONDSECOND单元单元 的内容互换的内容互换, FIRST+1, FIRST+1和和SECOND+1SECOND+1单元的内容互换单元的内容互换. . (2)(2)设设SS=2000H, SP=3456H. SS=2000H, SP=3456H. 用堆栈指令编一段程序实现上述用堆栈指令编一段程序实现上述 要求要求, , 并画出堆栈的数据变化示意图并画出堆栈的数据变化示意图. . (1)参考方法 … MOVAX, WORD PTR FIRST XCHGAX, WORD PTR SECOND MOVWORDPTR FIRST, AX (2) …. PUSHWORDPTR FIRST PUSHWORD PTR SECOND POPWORDPTR FIRST POPWORDPTR SECOND 图.入栈操作后堆栈情况 练习:计算1+2+3+…+100,并把和保存在SUM 单元中。 练习:计算1+2+3+…+100,并把和保存在SUM 单元中。 .486.486 DATA SEGMENT USE16DATA SEGMENT USE16 TT DB 1TT DB 1 SUM DW ?SUM DW ? DATA ENDSDATA ENDS CODE SEGMENT USE16CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATA BEG: MOV AX , DATABEG: MOV AX , DATA MOV DS, AXMOV DS, AX MOV CX, 100 MOV CX, 100 MOV AX, 0 MOV AX, 0 START: ADD AX, TTSTART: ADD AX, TT INC TT INC TT LOOP STARTLOOP START MOV SUM, AXMOV SUM, AX MOV AH, 4CHMOV AH, 4CH MOV 21HMOV 21H CODE ENDSCODE ENDS END BEGEND BEG 练习:对一个给定的N数据,用冒泡排序法进 行排序。 练习:对一个给定的N数据,用冒泡排序法进 行排序。 .486 Data segment Buf db ‘abcd18437hj’ Lens equ $-buf Count db lens Flag db ? Data ends Code segment Assume cs: code, ds: data Beg: Mov ax, data Mov ds, ax Again: dec count Jz done Mov flag, 0 Mov cx, count Mov si, offset buf Last: Mov al, [si] Mov ah, [si+1] Cmp ah, al Jnc next Mov [si], ah Mov [si+1], al Mov flag, 1 Next: inc si Loop last Cmp flag, 1 Je again Done: mov buf+lens, ‘$’ Mov ah, 9 Mov dx, offset buf Int 21h Mov ah, 4ch Int 21h Code ends End Beg 练习:由键盘输入任意的两个十进制数,然后转 换成对应的压缩BCD码的形式在屏幕上显示。 练习:由键盘输入任意的两个十进制数,然后转 换成对应的压缩BCD码的形式在屏幕上显示。 .486.486 DATA SEGMENT USE16DATA SEGMENT USE16 BCD DB ?BCD DB ? BUF DB 3 BUF DB 3 DB ?DB ? DB 3DUP(?)DB 3DUP(?) MESG1 DB ‘PLEASE INPUT :’,0DH,OAH,’$’MESG1 DB ‘PLEASE INPUT :’,0DH,OAH,’$’ MESG2 DB ‘ERROR! NUMBER IS FROM 0 TO 9. MESG2 DB ‘ERROR! NUMBER IS FROM 0 TO 9. PLEASE AGAIN!$’ PLEASE AGAIN!$’ DATA ENDSDATA ENDS CODE SEGMENT USE16CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATABEG: MOV AX , DATA MOV DS, AX MOV DS, AX L1: MOV DX, OFFSET MESG1L1: MOV DX, OFFSET MESG1 MOV AH, 9 ; MOV AH, 9 ;显示显示MESG1MESG1 INT 21H INT 21H MOV AH, 0AHMOV AH, 0AH MOV DX, OFFSET BUFMOV DX, OFFSET BUF INT 21H INT 21H ;输入字符串;输入字符串 MOV ALMOV AL,, BUF+2BUF+2 CMP ALCMP AL,, 30H30H JC ERRORJC ERROR CMP ALCMP AL,, 3AH3AH JC NEXT JC NEXT ;判断第一个数输入是否符合要求;判断第一个数输入是否符合要求 ERRORERROR:: MOV DXMOV DX,, OFFSET MESG2OFFSET MESG2 MOV AHMOV AH,, 9 9 INT 21HINT 21H JMP L1 JMP L1 ;输入错误提示重新输入;输入错误提示重新输入 NEXTNEXT:: SUB ALSUB AL,, 30H30H SAL ALSAL AL,, 4 4 ;求出十位数字;求出十位数字 MOV BCDMOV BCD,, ALAL MOV ALMOV AL,, BUF+3BUF+3 CMP ALCMP AL,, 30H30H JC ERRORJC ERROR CMP ALCMP AL,, 3AH3AH JNC ERROR JNC ERROR ;判断第二个数输入是否符合要求;判断第二个数输入是否符合要求 SUB ALSUB AL,, 30H30H OR BCDOR BCD,, ALAL MOV AHMOV AH,, 4CH4CH INT 21HINT 21H CODE ENDSCODE ENDS END BEG END BEG 练习:由键盘输入两个十六进制数,转换成 等值的十进制数后在屏幕上显示。 练习:由键盘输入两个十六进制数,转换成 等值的十进制数后在屏幕上显示。 .486 CMPDISP MACRO NN ;用宏语句完成比较法二进制到十进制转 换 LOCAL LAST,NEXT MOV DL, 0 LAST: CMP NUM, NN JC NEXT INC DL SUB NUM, NN JMP LAST NEXT: ADD DL, 30H MOV AH, 2 INT 21H ENDM DATA SEGMENT USE16 NUM DB ? BUF DB 3 DB ? DB 3DUP(?) DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATA MOV DS, AX MOV AH, 0AH MOV DX, OFFSET BUF INT 21H MOV AL, BUF+2 CMP AL, 39H JNA L1 ;数字在0到9之间转 SUB AL, 07H ;数字在A到F之间 L1: SUB AL, 30H MUL 16 MOV NUM, AL MOV AL, BUF+3 CMP AL, 39H JNA L2 SUB AL, 07H L2: SUB AL, 30H ADD NUM, AL ;NUM中为十六进制数的二进制表示 CMPDISP 100 CMPDISP 10 CMPDISP 1 MOV AH, 4CH INT 21H CODE ENDS END BEG
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第三篇习题讲解教案V2
链接地址:https://www.maidoc.com/p-15698427.html

当前资源信息

0****

编号: 20180822203750716190

类型: 共享资源

格式: PPT

大小: 186.50KB

上传时间: 2019-11-09

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开