精彩网站 http:// www.iquwu.com
(A)+(B)→C. 解: MOV AX , A MOV BX , N NEG BX
SUB AX , BX MOV C , AX
(4) 把DX , AX中的32位无符号数右移2位.
解:SHR DX , 1 RCR AX , 1 SHR DX , 1 RCR AX , 1
(5)用一条指令把CX只的整数转变为奇数. 解:OR CX , 1
(6) 把AX的第1,3位求反,其余各位保持不变. 解:XOR AX , 0000000000001010B
第5章 习题五
1. 设VAR1,VAR2是变量名,请指出下列语句的语法是否有错.如有错,指出是什么错误. (1)(1)MOV AX , VAR1+VAR2 ; 错误, 变量有段属性和偏移量属性,不能直接相加减. (2)(2)MOV CX , VAR1 – VAR2 ; 同上 (3)(3)MOV BL , AL SHR 3 ; 正确 (4)(4)MOV DX , AX AND 0FFH ;正确 (5)(5)MOV [SI] , 4 ; 正确 (6)(6)NEG VAR1[DI] ; 正确
(7)(7)ADD BYTE PTR[BX] , 1000 ; 错误,操作数类型不一致. (8)(8)MOV AL , OFFSET VAR1 ; 错误,操作数类型不一致.
2. 在执行下列指令寻找操作数时,需要使用段寄存器DS的指令有哪些? (1(1)LODSB √ (2) STOSB
(3) ADD BX , 34H (4) SHL [BP] , 1 (5) NEG [BX] √
(6) (6) SHR [SI] , 1 √ (7) (7) MOV AX , [SI] √ (8)(8) SBB BX , [DI] √
26
精彩网站 http:// www.iquwu.com
(9) (9) MOVSB √ (10) CMPSB √
3. DB1 DB 5 DUP[3 DUP(2) 2 DUP(3)] MOV AL , DB1+4
MOV BX , WORD PTR DB1[3] 上面2条指令执行后,(AX)=? (BX)=? 答: (AL) = 3 , (BX) = 0202H
4. 下面程序段执行后,寄存器AX , BX的内容是多少? ARY_W DW 10H DUP(1234H) ARY_B EQU BYTE PTR ARY_W ……
MOV AX , ARY_W+2 MOV BL , ARY_B+2
答:(AX) = 1234H, (BX) = 34H
5. 下面指令执行后,寄存器DS 和SI的内容是多少? ADR DW 1234H, 5678H, 0ABCDH …
LDS SI , ADR+1
答:(DS) = ADR的段基址, (SI) = (ADR+1)的偏移量 6. 有下列数据段:
DATA SEGMENT ORG 30H
CON EQU 10H
S1 DB ?IBM PC? DB 0AH, 0DH CONT EQU $-S1
27
精彩网站 http:// www.iquwu.com
S2 DW ?IB?,?M?,?PC?, 0A0DH DATA ENDS
上述数据段中S1,S2的偏移量分别是多少?CONT的值和S2+5字节单元的内容是多少? 答:S1的偏移量为30H, S2的偏移量为38H, CONT=8, (S2+5)=?P?=50H 7. 下面各语句汇编后,变量CON1,CON2和CON3的内容是多少? N1 = 10 = (00001010)2 N2 = 5 = (00000101)2 N3 = 3 = (00000011)2
CON1 DB (N1 AND N2 OR N3) GE 0FH CON2 DW (N2 AND N1 XOR N3) LE 0FH CON3 DB (N1 MOD N3) LT (N2 SHR 1) 解: (CON1) = 00H , (CON2) = 0FFFFH (CON3) = 0FFH
8.设(DX) = 80 = 0000 0000 0101 0000B , CF=1
MOV AX , 0AA50H ; (AX) = 1010 1010 0101 0000B XOR AH , 0FFH ; (AX) = 0101 0101 0101 0000B
OR DH , 55H 55H=0101 0101B (DX) = 0101 0101 0101 0000B SBB AX , DX ; (AX) = 0FFFFH , (DX) = 5550H 上述指令序列执行后 , (AX) = ? (DX)=? 解:(AX) = 0FFFFH , (DX) = 5550H
9. 设AX,BX,DX中均有数据0AAH,下面3条指令执行后,AX,BX,CX中的内容分别是多少?
AND AX , - 2 OR BX , - 2 XOR CX , - 2 解:
28
精彩网站 http:// www.iquwu.com
11. DATA1 EQU BYTE PTR DADA2
DATA2 DW 0A987H , 3456H SAR DATA1+1,1 MOV AX , DATA2+1
SAL DATA2+1 , 1 MOV BX , DATA2=1
上述指令执行后,(AX)=? (BX)=? CF=? 以DATA2为首地址的两 个字单元内容是多少?
解: SAR DATA1+1,1;移位前10101001,移位后110100100,CF=1 MOV AX , DATA2+1; (AX) = 3456H
SAL DATA2+1 , 1 ; 移位前0011 0100 0101 0110
移位后0110 1000 1010 1100,CF = 0 MOV BX , DATA2+1 ; (BX) = 68ACH 12. MOV AL , 0FH XOR AL , 0FFH MOV CL , 7 SHR AL , CL
上述几条指令执行后,(AL)=? , 如将SHR指令换成ROR或RCR,那么AL的内容分别为多少?
解:执行XOR AL,0FFH后
执行 SHR AL , CL 后,
结果, (AL) = 00000000B=0
14. DATA SEGMENT ORG $+10H
DA1 DB ?ABCDEFEDCBA? DA2 DB ?E? DATA ENDS ……
LEA DI , DA1 MOV AL , DA2
29
精彩网站 http:// www.iquwu.com
MOV CX , DA2 – DA1 CLD
REPNE SCASB
上述程序段运行后,(DI)=? (CX)=? 答: (DI) = DA1+4 , (CX)=5 16. DATA SEGMENT
VAR1 DB ? , ? VAR2 DB ? , ?
ADR DW VAR1,VAR2 DATA ENDS
若要使ADR+2 字单元的内容为0022H, 上述空白处应填写什么语句? 解:上述空白处应填写
ORG 0020H 17.现有下列程序段:
MOV SI , OFFSET SOUR MOV DI , OFFSET DEST MOV CX , 20H CLD
REP MOVSW 如果上述程序段不使用串操作指令(即取消REP MOVSW指令), 试修改程序段,完成原程序段功能. 解: MOV SI , OFFSET SOUR MOV DI , OFFSET DEST MOV CX , 20H
LOP: MOV AX , [SI] MOV [DI] , AL INC SI INC SI INC DI INC DI LOOP LOP
18. 下面是两个字符串的比较程序,比较结果存放在RESULT单元中.试问: (1) 程序运行后,结果单元(RESULT)存放的内容表示什么意义?
(2) 如SJ1的字符串为?captial?,SJ2的字符串为?captive?时,(RESULT)=? SJ1 DB ?…………? SJ2 DB ?…………? RESULT DB 0
30