第五章 习题
5-1 下面的程序运行后,(AL)= MOV CL, 8 MOV AL, 0 NOT ROL
AL AL, CL
,CF= 。CMP AL, 0FFH JZ NEXT MOV AL, 0 NEXT: ……
答:(AL)=0FFH, CF=0
5-2 在下面的程序段中,“DEC CX”指令执行了 MOV CX, 6 JCXZ NEXT L1:
DEC CX JNZ L1 NEXT: …… (A) 0 (C) 6 答:C
(B) 5 (D) 7
次。
5-3
设有单字节有符号数 X,Y 与 Z,如果 X+Y>200,则求 X-Z,否则求
X+Z,运算结果存储在 SUM 字单元中。 DATA SEGMENT
X DB 120 Y DB 100 Z DB 20 SUM DB 0 DATA ENDS
STACK1 SEGMENT STACK
DB 20H(?)
STACK1 ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1 BEGIN: MOV AX, DATA
MOV DS, AX XOR AH, AH
MOV AL, X XOR BH, BH MOV BL, Y
ADD AX, BX//注意这里用的是 16 位的寄存器,想想原因? CMP AX, 200 MOV AL, X JG SUB0;判断ADD AL, Z JMP END0
SUB0: SUB AL, Z END0: XOR AH,AH
MOV SUM, AX MOV AH,4CH INT 21H
CODE ENDS
END BEGIN
5-4 下面的程序段执行后,BUF1 的前 5 个字节单元内容分别是多少? DATA SEGMENT DA1 DA2 DB $-DA2
BUF1 DB 10HDUP(1,2,3) BUF2 DB 10H, 20H, 30H DATA ENDS ……
MOV SI, OFFSET DA1 MOV DI, OFFSET BUF1 MOV CX, 5 LOP: MOV INC INC …… 答:
SI DI
AL, [SI]
MOV [DI], AL
DW123H, 456H, 0AB00H DB 12H, 34H, 56H, 0ABH
LOOP LOP
BUF1 2233HH 0011HH 5566HH 0044HH 0000HH
5-5 阅读下列程序,回答下列问题: (1) 该程序完成什么功能?
(2) 程序中的“INC SI”可否用指令“ADD SI, 1”代替,为什么? (3) 程序中的指令 LEA SI, DATA1 可用指令 (4) CLC 的目的是 DATA SEGMENT
DATA1 DB 85H, 27H, 4AH DATA2 DB 93H, 87H, 65H LEGH DW 3 SUM DB 0, 0, 0 DATA ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA BEGIN: MOV AX, DATA
MOV DS, AX
LEA SI, DATA1 LEA BX, DATA2 LEA DI, SUM MOV CX, LEGH CLC
AGAIN: MOV AL, [SI] ADC AL, [BX] MOV [DI], AL INC SI INC BX INC DI
LOOP AGAIN MOV AH, 4CH INT 21H
。
代替。