指令执行后,(AX)= 1236H ,(BX)= 0001H 。
21、假设(AX)=0FFFFH,则下述程序段执行后,(AX)= 。 答:
INC AX ;(AX)=0FFFFH+1=0000H NEC AX ;(AX)=0-0000H=0000H DEC AX ;(AX)=0000H-1=0FFFFH NEG AX ;(AX)=0-0FFFFH=0001H 程序段执行后,(AX)= 0001H 。
22、假设(BX)=12FFH,则下述程序段执行后,(BX)= ,ZF= ,
CF= 。 答:
MOV CL,8 ;(CL)=8
ROL BX,CL ;BL循环左移8位 (P.153.)
(BX)=0FF12H CF=0
AND BX,0FFH ;(BX)=0012H
CMP BX,0FFH ;(BX)=0012H,ZF=0(结果不为0),CF=1(有借位) 程序段执行后,(BX)= 0012H ,ZF= 0 ,CF= 1 。
23、假设(AX)=0B55BH,(DX)=0F0FH则下述程序段执行后,(AX)= 。 答:
AND AH,DL ; (AH)=B5H=10110101H ∧ (DL)=OFH=00001111H
(AH)=00000101H=05H XOR AL,DH ; (AL)=5BH=01011011H ? (DH)=OFH=00001111H (AL)=01010100H NEG AH ;(AH)=0-05H=0FBH NOT AL ;(AL)=10101011H=0ABH 程序段执行后,(AX)= 0FBABH 。
24、假设(AX)=0FF60H,则下述程序段执行后,(AX)= ,(CF)= 。 答:
STC ;(P.408.)进位位置位,CF <= 1, MOV DX,96 ;(DX)=96
XOR DH,0FFH ; (DH)=00H=00000000H ? OFFH=11111111H
(DH)=11111111H=0FFH
SBB AX,DX ;(AX)=0FF60H-0FF96H=0FFCAH,(CF)=1 (有借位) 程序段执行后,(AX)= 0FFCAH ,(CF)= 1 。
25、假设(AL)=08,(BL)=07,则下述程序段执行后,(AH)= ,(AL)= ,(CF)= 。 答:
ADD AL,BL ; (AL)=08=00001000 +(BL)=07=00000111
(AL)=00001111 AF=0 (无辅助进位)
AAA ;因为AF=0,AL高4位清0 (AL)=00001111=0FH
(AF)=0,(CF)=0
程序段执行后,(AH)= 00H ,(AL)= OFH ,(CF)= 0 。
26、假设DF=0,(DS:0100H)=01A5H则下述程序段执行后,(AL)= ,
SI= 。 答:
MOV SI,0100H ;SI=0100H
LODSW ;(P.153.) 源串地址为 DS:[SI] 即 DS:0100H
(AX)=01A5H, SI=0100H+2=0102H
程序段执行后,(AL)= 0A5H ,SI= 0102H 。
27、用比较指令CMP比较两个带符号数,如果目的操作数大于源操作数,则标志位OF=SF,为什么? 答:如果目的操作数大于源操作数,
(1)若两数都为正数,则OF=0,无溢出,SF=0 正数的符号位为0 (2)若目的操作数为正数,源操作数为负数, 无溢出时,OF=0,SF=0 有溢出时,OF=1,SF=1 (3)若两数都为负数
则OF=0,无溢出,SF=0(目的操作数大于源操作数)
28、试按下列要求分别编制程序段: 答:
(1) 把标志寄存器中符号位SF置“1” (P.138.)
MOV AH,10000000B SAHF
(2) 寄存器AL中高低4位互换
MOV CL,04H ROL AL,CL
(3) 假设有3个字存储单元A,B,C在不使用ADD和ADC指令的情况下,实现(A)+
(B)=> C
MOV AX,A NEG B SUB AX,B MOV C,AX
(4) 把DX,AX中的32位无符号数右移2位
SHR DX,1 RCR AX,1 SHR DX,1 RCR AX,1
(5) 用一条指令把CX中的整数转变为奇数
OR CX,0001H
(6) 将AX中第1,3位变反,其余各位保持不变
XOR AL,00001010B
(7) 根据AX中有0的位对BX中对应位变反,其余各位保持不变。
相关推荐: