MOV DATAY,AX
MOV DATAY+2,DX
(4)
MOV AX,WORD PTR DATAX
MOV BX,WORD PTR DATAY
MUL BX
MOV RESULT,AX
MOV RESULT+2,DX
MOV AX,WORD PTR DATAX
MOV AX,WORD PTR DATAY+2
MUL BX
ADD RESULT+2,AX
ADC RESULT+4,DX
MOV AX,WORD PTR DATAX+2
MOV BX,WORD PTR DATAY
MUL BX
ADD RESULT+2,AX
ADC RESULT+4,DX
MOV AX,WORD PTR DATAX+2
MOV BX,WORD PTR DATAY+2
MUL BX
ADD RESULT+4,AX
ADC RESULT+6,DX
(5) MOV AX, DATAX
MOV BL, 23
DIV BL
MOV BL,AH
MOV AH, 0
MOV DATAY, AX ;存放商
MOV AL,BL
MOV DATAY+2, AX ;存放余数
(6) MOV AX, DATAX
MOV DX, DATAX+2
DIV DATAY
MOV DATAY, AX
MOV DATAY+2, DX
13. 试分析下面的程序段完成什么操作?
MOV CL,04
SHL DX,CL
MOV BL,AH
SHL AX,CL
SHR BL,CL
OR DL,BL
答案:将DX: AX中的双字左移4位(乘16)
14. 用其他指令完成和下列指令一样的功能:
(1) REP MOVSB (2) REP LODSB (3) REP STOSB (4) REP SCASB
答案:
(1) LOOP1:
MOV AL,BYTE PTR [SI]
MOV ES:BYTE PTR [DI], AL
INC SI 或: DEC SI
INC DI 或: DEC DI
LOOP LOOP1
(2) LOOP1:
MOV AL, BYTE PTR [SI]
INC SI 或: DEC SI
LOOP LOOP1
(3) LOOP1:
MOV ES:BYTE PTR [DI], AL
INC DI 或: DEC DI
LOOP LOOP1
(4) LOOP1:
CMP AL,ES:BYTE PTR [DI]
JE EXIT
INC DI 或: DEC DI
LOOP LOOP1
EXIT:
15. 编写程序段, 比较两个5字节的字符串OLDS和NEWS, 如果OLDS字符串与NEWS不同, 则执行NEW_LESS, 否则顺序执行程序。
答案:
LEA SI, OLDS
LEA DI, NEWS
MOV CX, 5
CLD
REPZ CMPSB
JNZ NEW_LESS
16. 假定AX和BX中的内容为带符号数, CX和DX中的内容为无符号数, 请用比较指令和条件转移指令实现以下判断:
(1) 若DX的值超过CX的值,则转去执行EXCEED
(2) 若BX的值大于AX的值,则转去执行EXCEED
(3) CX中的值为0吗? 若是则转去执行ZERO
(4) BX的值与AX的值相减, 会产生溢出吗? 若溢出则转OVERFLOW
(5) 若BX的值小于AX的值,则转去执行EQ_SMA
(6) 若DX的值低于CX的值,则转去执行EQ_SMA
答案:
(1) CMP DX, CX
JA EXCEED
(2) CMP BX, AX
JG EXCEED
(3) CMP CX, 0
JE ZERO
(4) SUB BX, AX
JO OVERFLOW
(5) CMP BX, AX
JL EQ_SMA
(6) CMP DX, CX
JB EQ_SMA
17. 假如在程序的括号中分别填入指令:
(1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20
试说明在三种情况下, 当程序执行完后, AX、BX、CX、DX四个寄存器的内容分别是什么?
TITLE EXLOOP.COM