汇编语言练习题2

CMP AL, ‘a’ JB ERR

CMP AL,‘z’ JA ERR

SUB AL, 20H MOV DL, AL MOV AH, 2 INT 21H JMP NEXT

ERR: LES DX, ERROR MOV AH, 9 INT 21H JMP NEXT EXIT: MOV AH, 4CH INT 21H CODE ENDS

END START

26.下面子程序完成把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。 BINTOHEX PROC NEAR PUSH CX PUSH AX 备选答案: PUSH DX ① JL PRINTIT MOV CH, 4 ② AND AL, OFH ROTATE: MOV CL, 4 ③ DEC CH ROL BX, CL MOV AL, BL 2 ADD AL, 30H CMP AL, 3AH 1 ADD AL, 7H PRINTIT: MOV DL, AL MOV AH, 2 INT 21H 3 JNZ ROTATE POP DX POP AX POP CX RET

BINTOHEX ENDP 备选答案:

① JL PRINTIT

- 6 -

② AND AL, OFH ③ DEC CH

27.下面程序段是判断寄存器BL中第3位、第5位是否同时为1,如同时为1,则AH

置0,否则AH置全l。 MOV DL, BL

备选答案: NOT DL

① JMP NEXT 2

② TEST DL, 28H JZ ZERO

MOV AH, 0FFH 1 ZERO: MOV AH, 0

NEXT: 备选答案: ① JMP NEXT ② TEST DL, 28H

三、判断题 (在正确的叙述或指令前打?,错误的题前打?)(共20题) ( X ) 1. PUSH 5588H ( X ) 2. MOV DS, 1720H ( X ) 3. ADD AX, CL ( X ) 4. AND AX,[DX] ( X ) 5. MOV CS, 0600H ( X ) 6. PUSH 074CH ( X ) 7. ADD AX, CL ( X ) 8. OR BX,[CX] ( V ) 9 IMUL DX

( X ) 10. XOR AL, BX ( X ) 11. MOV [DX], BX

( X ) 12. SUB EAX, [ECX*10+100] ( X ) 13. MOV DS, 1200H ( X ) 14. XCHG 256, [100H] ( V ) 15. OUT DX, AX

( X ) 16. LEA VAR, [BP+SI] ( X ) 17. NEG 88

( V ) 18. INC WORD PTR [100H] ( V ) 19 IMUL DX ( X ) 20. XOR AL, BX 四、简答题(共4题) 1.标志寄存器:

标志寄存器:是8086/088中唯一按位操作的寄存器,该寄存器为16位,有效的标志位共9位。其中,CF,PF,AF,ZF,SF,OF为状态标志,用于反映最近一次影响标志位的算术或逻辑运算中运算过程、运算结果的一些性质;TF,IF,DF为控制标志,用于控制CPU对某些特定事件的处理方式以及CPU的工作模式。 2.逻辑地址:

- 7 -

逻辑地址:由两个16位的地址分量构成,其中一个为段基值,另一个为偏移量,两个分量均为无符号数编码。物理地址=段基值×16+偏移量.

3. 下列程序段执行完后,SF、ZF、CF、OF的内容是什么? MOV BX, 4321H ADD BX, 1234H

SF=0 ZF=0 CF=0 OF=0

4. 下列ASCⅡ码串(包括空格串)依次存储在起始地址为CSTRING的字节单元中: CSTRING DB ‘PERSONAL COMPUTER’

请编写指令将字符串中的第1个和第7个字符传给DX寄存器。 MOV DX, CSTRING MOV DX, CSTRING+6

五、程序分析题(分析程序段总的功能或回答相关问题或运行结果)(共14题)。 1. 阅读如下程序片段 MOV AL,4CH MOV BL,0B5H ADD AL,BL

执行上述程序片段后,(AL)= 01H ,(BL)= 0B5H ,CF= 1 ,OF= 0 2. 阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH

执行上述程序片段后,(AL)= 7H , CF= 0 ,OF= 0 ,PF= 0 3. 阅读如下程序片段 MOV AL,7EH MOV CL,04H ROL AL,CL

执行上述程序片段后,(AL)= 0F9H ,(CL)= 04H ,CF= 1 ,OF= 无意义 4. 阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AX,BX INC AX

执行上述程序片段后,(AX)= 4421H ,(CF)= 1 ,OF= 0 ,PF= 0 5. 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)

=28H

MOV BX,0024H LEA BX,[BX] OR BX,0 ADC BX,[BX]

执行上述程序片段后,(BX)= 287AH ,(CF)= 0 ,OF= 0 ,PF= 0 6. 阅读如下程序片段,假设(SP)=0064H MOV AX,0001H MOV BX,0002H

- 8 -

PUSH AX PUSH BX POP AX POP BX

执行上述程序片段后,(AX)= 0002H ,(BX)= 0001H ,(SP)= 0064H 。(CF)= 0 7. DATA SEGMENT

TAB DW 1,2,3,4,5 ENTRY DW 2

DATA ENDS

…MOV BX, OFFSET TAB ADD BX, ENTRY MOV AX, [BX] MOV CX, TYPE TAB MOV DX, SIZE TAB

执行上述指令后,(AX)= 3 ,(CX)= 2 ,(DX)= 2 。

8.MOV AX, W IMUL X MOV BX, Y ADD BX, 6 IDIV BX

MOV Z, AX MOV R,DX

上述程序段中X,Y,Z,R,W均为有符号数的字变量,试说明上述程序段完成什么功能。 求数值表达式的值:(W*X)/(Y+6)?Z,余数?R 9.

MOV AX, 1234H MOV CL, 8

ROL AX, CL;这条指令执行后,(AX)= 3412H DEC AX ;这条指令执行后,CF 不变 MOV CX, 4

MUL CX ;这条指令执行后,SF= 1

10. CMP DX, BX

JG X JL Y

CMP AX, CX JA X X: …

Y: …有两个双精度数?、?分别存储于DX、AX及BX、CX中,上述程序段完成的功能是什么?

- 9 -

完成的功能是:如果?.>?,则转向X执行,否则转向Y执行。 11.设有宏定义如下:

TRANS MACRO BUF1, BUF2

MOV AX, BUF1 MOV BX, BUF2 MOV BUF1, BX MOV BUF2, AX ENDM

请说明宏指令完成的功能是什么?并将宏调用TRANS WORD_VAR1, WORD_VAR2进行宏扩展。

宏定义完成的功能是:将两个存储单元BUF1和BUF2的内容互换。 宏调用TRANS WORD_VAR1, WORD_VAR2的宏扩展是

MOV AX, WORD_VAR 1 MOV BX, WORD_VAR 2 MOV WORD_VAR 1, BX MOV WORD_VAR 2, AX

12.分析下面程序段,回答指定问题: XOR AL, AL CALL SUBROUT MOV BL, AL CALL SUBROUT RCR AL, 1

SUBROUT PROC NEAR NOT AL JS NEXT STC

NEXT:RET SUBROUT ENDP

上述程序执行后,(AL)= 80H ,(BL)= 0FFH 。

13. 试回答下面程序段执行后完成什么功能? OLDS DB ‘COMPUTER’ N EQU $-OLDS

NEWS DB ‘COMPUTOR’

…LEA SI, OLDS

LEA DI, NEWS MOV CX, N CLD

REPE CMPSB

JNZ NEW_ADDRESS OLD_ADDRESS:

- 10 -

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4