(8) MOV AX,[BX-SI] (9) INC [BX]
(10) MOV 25,[BX]
(11) MOV [8-BX],WORD PTR 25 (12) MOV AL,DATA2[SI] (13) MOV AX,OLA-DATA (14) MOV AX,[BX*7]
(15) MOV AL,BYTE PTR[SI-100H]
24.若数组ARRAY在数据段中已作以下定义 ARRAY DW 100 DUP(?)
试指出下列语句中操作数中的各操作符的作用,指令执行后各寄存器产生了什么变化? MOV BX,OFFSET ARRAY MOV CX,LENGTH ARRAY MOV SI,0
ADD SI,TYPE ARRAY
25. 试分析下列程序段,说明完成了什么操作?
SKEY DB 2
?
START: MOV AL,SKEY
LEA BX,BRATB SHL AL,1 XOR AH,AH ADD BX,AX JMP BX ?
BRATB: JMP SHORT ZERO
JMP SHORT ONE JMP SHORT TWO JMP SHORT THREE ?
26.执行下列程序段前,BUFFER存储区的数据为: DB 1,2,3,4,5,6
请给出执行下面程序段后BUFFER存储区中的数据。 MOV SI,OFFSET BUFFER MOV CX,5 XOR AL,AL AGAIN: SHL [SI],1
INC SYTE PTR[SI] ADD AL,[SI] INC SI LOOP AGAIN MOV [SI],AI HLT
27.判断下列指令或程序是否有错,若有错,请指出错在哪里? (1)K1 EQU 1024
?
MOV K1,AX
(2) MOV DS,100
MOV [1000],[2000]
(3) IMP DB ?
?
MOV IMP,AX
(4) A1 DB ?
A2 DB 10 ?
CMP A1,A2
(5)将1000送入X1单元,用如下程序:
X1 DB ? ?
MOV BX,X1
MOV [BX],1000
28.假设VAR1和VAR2为自变量,LAB为程序中的一个标号,试找出下列指令的错误之处。
(1)ADD VAR1,VAR2 (2)SUB AL,VAR1 (3)JNZ VAR1 (4)JMP LAB[SI] (5)JMP NEAR LAB 26.有符号定义语句如下:
BUFF DB 1,2,3,‘123’
EBUFF DB 0
L EQU EBUFF-BUFF 问L的值为多少?
29.假设程序中的数据定义如下:
LNAME DB 30 DUP(?) ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE_LIST DB 1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入BX。
(2)用一条指令将CODE_LIST的头两个字节内容放入SI。
(3)写一条伪指令使CODE_LENTH的值等于CODE_LIST域的实际长度。
30.指出下列伪指令表达方式的错误,并改正之。 (1)STACK_SEG SEGMENT‘STACK’ (2)DATA_SEG SEG
(3)SEGMENT ‘CODE’
(4)MYDATA SEGMENT‘DATA’
? ENDS
(5)MAIN_PROC PROC FAR
?
END MAIN_PROC MAIN_PROC ENDP
31. 指出下列每一对伪指令语句的区别。
(1) X1 DB 76
X2 EQU 76
(2) X1 DW 3548H
X2 EQU BYTE PTR X1
(3) X1 EQU 3
X2=3
(4) X1 DW 3678H
X2 DB 36H,78H
(5) X1 DW 6341H
X2 DW 6341
32. 假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?) COUNT DD ?
PLENTH EQU $-PARTNO
问PLENTH的值为多少?它表示什么意义?
四、计算
1.已知x,机器字长为8位,试求 [x]原、[x]反、[x]补?
(1)x = +1001101B (2) x = +0001110B (3) x = -1011001B (4) x = -0100111B
2.已知x及y,试分别计算[x+y]补、[x-y]补,并指出是否产生溢出(设补码均用8位表示)。
(1)x = +1001110, y = +0010110 (2)x = +0101101,y = -1100100 (3)x = -0101110,y = +0111011 (4)x = -1000101,y = -0110011
3.完成下列各式补码数的运算,指出运算结果是否有效。
(1)00101101+10011100 (2)01011101-10111010 (3)70ADH-0B1CEH (4)0A2C0H+1234H
4. 一个16位二进制整数,若采用补码表示,由5个“1”和11个“0”组成,则最小值是多少?最大值是多少?(用十进制数表示)
5.已知(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?
(1) 立即寻址 (2) 直接寻址
(3) 使用BX的寄存器寻址
(4) 使用BX的寄存器间接寻址 (5) 使用BX的寄存器相对寻址
6.在0624H单元内有一条二字节指令:JMP SHORT OBJ,若其中位移量分别为(1) 27H,(2) 6BH,(3)0C6H,试问转向地址OBJ的值是多少?
7.求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF,ZF,CF和OF的值。
(1)1234H (2) 4321H (3) 0CFA0H (4) 9D60H
8.设(DS)=2000H,(BX)=1256H,(SI)=528FH,TABLE=20A1H,(232F7H)=3280H,
(264E5H)=2450H,执行下述指令
(1)JMP BX ;(IP)=? (2) JMP TABLE[BX] ;(IP)=? (3) JMP [BX][SI] ;(IP)=?
9.给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH, (224A0)=0600H,(275B9)=098AH,试为以下的转移指令找出转移的偏移地址。
(1)段内直接寻址。
(2)使用BX及寄存器间接寻址方式的段内间接寻址。 (3)使用BX及寄存器相对寻址方式的段内间接寻址。
10.求出以下各十六进制数与十六进制数4AE0H之差,并根据结果设置标志位SF,ZF,CF和OF的值。
(1)1234H (2) 5D90H (3) 9090H (4) 0EA04H
11. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,20100H=12H,(20101)=34H,(20102)=56H, (20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=0B7H,(21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1) MOV AX,1200H (2) MOV AX,BX
(3) MOV AX,[1200H] (4) MOV AX,[BX]
(5) MOV AX,1100[BX] (6) MOV AX,[BX][SI]
(7) MOV AX,1100[BX][SI]
12. 已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H, (SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228)=1E40H,(1EAF6H)=091DH,试求单独执行下列指令后的结果。
(1) MOV CL,20H[BX][SI] ;(CL)=? (2) MOV [BP][DI],CX ;(1E4F6H)=? (3) LEA BX,20H[BX][SI] ;(BX)=?
MOV AX,2[BX] ;(AX)=?
(4) LDS SI,[BX][DI] ;(SI)=?
MOV [SI],BX ;((SI))=?
(5) XCHG CX,32H[BX] ;(CX)=?
XCHG 20[BX][SI],AX ;(AX)=? (09226H)=?
五、应用
1.试根据以下要求写出相应的汇编语言指令。
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。 (2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
(3)用BX寄存器和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
(4)用位移量0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。
(5)把数0B5H的与(AL)相加,并把结果送回AL中。
2. 不用乘法指令实现(AX)与10的乘法运算。
相关推荐: