MOV Z, AX MOV R, DX (4) MOV AX, W SUB AX, X CWD MOV BX, 5 IDIV
BX
IMUL Y
SHL AX, 1 ;((DX),(AX))*2 RCL DX, 1 3.18
已知程序段如下:
MOV AX, 1234H ;(AX)=1234H,标志位不变 MOV CL, 4 ROL DEC
;(AX)和标志位都不变
AX, CL ;(AX)=2341H,CF=1,SF和ZF不变 AX ;(AX)=2340H,CF=1不变,SF=0,ZF=0
MOV CX, 4 ;(AX)和标志位都不变 MUL I NT 20H 试问:
(1) 每条指令执行完后,AX寄存器的内容是什么? (2) 每条指令执行完后,进位、符号和零标志的值是什么?
CX ;(AX)=8D00H,CF=OF=0,其它标志无定义
(3) 程序结束时,AX和DX的内容是什么? 答:(1) 见注释; (2) 见注释;
(3) (AX)=8D00H,(DX)=0 3.19
程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?
MOV AX, 0 ;(AX)=0, 标志位不变 DEC ADD ADD NOT SUB ADD SUB AND
AX ;(AX)=0FFFFH, CF不变,SF=1,ZF=0,OF=0 AX, 7FFFH ;(AX)=7FFEH, AX, 2 ;(AX)=8000H,
CF=1,SF=0,ZF=0,OF=0
下列
CF=0,SF=1,ZF=0,OF=1
AX ;(AX)=7FFFH,标志位不变 AX, 0FFFFH
;(AX)=8000H,
CF=1,SF=1,ZF=0,OF=1
AX, 8000H ;(AX)=0, CF=1,SF=0,ZF=1,OF=1
AX, 1 ;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0 AX, 58D1H ;(AX)=58D1H,
CF=0,SF=0,ZF=0,OF=0
SAL AX, 1 ;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1 SAR AX, 1 ;(AX)=0D8D1H, CF=0,SF=1,ZF=0,OF=0 NEG
AX ;(AX)= 272FH,
CF=1,SF=0,ZF=0,OF=0
ROR AX, 1 ;(AX)= 9397H, CF=1,SF和ZF不变,OF=1
答:见注释。 3.20
变量DATAX和变量DATAY的定义如下:
DATAX DW 0148H DW 2316H DATAY DW 0237H DW 4052H
请按下列要求写出指令序列:
(1) DATAX和DATAY两个字数据相加,和存放在DATAY中。
(2) DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。
(3) 解释下列指令的作用: STC
MOV BX, DATAX ADC
BX, DATAY
(4) DATAX和DATAY两个字数据相乘(用MUL)。 (5) DATAX和DATAY两个双字数据相乘(用MUL)。 (6) DATAX除以23(用DIV)。
(7) DATAX双字除以字DATAY (用DIV)。 答:(1) MOV AX, DATAX ADD DATAY, AX MOV AX, DATAX+2
ADD DATAY+2, AX (2) MOV AX, DATAX ADD DATAY, AX MOV AX, DATAX+2 ADC DATAY+2, AX MOV DATAY+4, 0 ;用于存放进位位
ADC DATAY+4, 0
(3) DATAX和DATAY两个字数据之和加1,结果存入(4) RESULT1 DW 0 DW 0 RESULT2 DW 0
DW 0 ┇
MOV AX, DATAX MUL DATAY MOV RESULT1 , AX MOV RESULT1+2, DX MOV AX, DATAX+2 MUL DATAY+2 MOV RESULT2 , AX MOV RESULT2+2, DX (5) AA DW 0
BX寄存器。 BB DW 0 CC DW 0 DD DW 0 ┇
MOV AX, DATAX MUL DATAY MOV AA , AX MOV BB, DX MOV AX, DATAX MUL DATAY+2 ADD BB, AX ADC CC, DX MOV AX, DATAX+2 MUL DATAY ADD BB, AX ADC CC, DX ADC DD, 0
MOV AX, DATAX+2 MUL DATAY+2 ADD CC, AX ADC DD, DX (6) MOV
AX, DATAX