4、请指出下列指令错误原因:
A. OR AX,[CX] CX不能做间址寄存器
B. ADD [SI],[BX][DI]源操作数和目的操作数不能同时为存储器操作数 C. JMP BYTE PTR LOOPS 标号没有BYTE 属性 D. SAR AX,4 循环次数大于1时应先至于CL中 E. RCL DX 没有指定移位次数
5、DS=2000H, AX=2000H, BX=5030H, (25030H)=03H,(25031H)=05H, 那么执行下列语句,A.MOV AX,BX AX= 5030H ;B.MOV AX,[BX] AX= 0503H 6、数据定义如下
X1 DB 10H,100,-1 X2 DW 10H,100,-1 X3 DD ?
COUNT EQU X3-X1
变量COUNT的值是 9 , 其表示的意义是 计算分配给以上变量的存储单元的个数
7、A DW 1234H B DW 5678H ┇ PUSH A PUSH B POP A
POP B
试回答:上述程序段执行后(A)= 5678H ;(B)= 1234H 。 8、设某数据段: DATA SEGMENT
ORG 20H NUM1=8
NUM2=NUM1+10H DA1 DB 'COMPUTER'
DB 0AH,0DH COUNT EQU $-DA1
DA2 DW 'CO','MP','UT','ER' DATA ENDS 试回答:
(1)DA1的偏移地址是:( 20H ) (2)COUNT的值是:(0AH ) (3)DA2+5字节单元的内容是 :( ‘U’ ) 9、下列程序段完成什么工作? DAT1 DB 30 DUP(?) DAT2 DB 10 DUP(?) ┇
MOV CX,10 MOV BX,20 MOV SI,0
17
MOV DI,0
NEXT:MOV AL,DAT1[BX][SI] MOV DAT2[DI],AL INC SI INC DI
LOOP NEXT
把DAT1中的后十个元素放到DAT2中
10、下列语句在存储器中分别为变量数据区分配多少个字节单元? (1)VAR3 DD 10 为VAR3分配4个字节单元; (2)VAR4 DW 4 DUP(?),2 为VAR4 分配10个字节单元。 11、设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?
(1)JMP BX IP=____1256H________________ (2)JMP TABLE[BX] IP=______3280H _____________
12、选用NOT,AND,OR XOR逻辑指令编写一指令序列,实现将AL第0位,第2位同时置1,其他位变反。
AND AL,0FEH;OR AL,4H;XOR AL,0FAH
13、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如: PUSH AX PUSH BX PUSH CX PUSH DX
: 恢复现场
试写出恢复现场时的指令序列。
POP DX POP CX POP BX POP AX
14、完成下列操作,选用什么指令:
(1)将AX的内容,减去0520H,和上次运算的借位;
SBB AX,0520H
(2)将变量名TABL的段地址送AX; MOV AX,SEG TABL 15、 D1 DB 20H DUP(?)
D2 DW D1
请写出用一条指令实现取D1的偏移地址送给SI中的三种方法。
① LEA SI,D1
② MOV SI,OFFSET D1 ③ MOV SI,D2
18
16、在8086/8088系统中,存储器是分段组织的,按各段实际长度定位。已知(DS)=2150H,(CS)=2640H,(SS)=2250H,SP=100H,问题:
(1)数据段起始地址是多少? 21500H
(2)计算数据段中最多可以存放多少个字节数据?(要有具体计算式)
22500H-21500H=1000H
(3)代码段最多可以存放多少个字节程序代码?说明理由。
64K 因为分段要求最大为64K
17、已知数据段定义如下: DATA SEGMENT
ORG 100H
BUF DW 'CD',1,3 DUP(4,2 DUP(8,6)) VRA DB 4AH DATA ENDS
单独执行下列语句
LEA BX,BUF BX=__100H _____
MOV CX,VRA-BUF CX=__22H _____(用十六进制数表示)。 18、分别说明下列两组指令中两条指令操作的相同点和不同点 (1)SUB AX,BX CMP AX,BX 相同点:都是做减法
不同点:SUB指令将结果回送给目的操作数,CMP指令不回送给目的操作数
(2)AND CX,DX TEST CX,DX 相同点:都是做与操作
不同点:AND 指令将结果回送给目的操作数,TEST指令不将结果回送给目的操作数
19、下列每组指令中的两条指令有否区别?若有,请说出它们的不同点。 A. MOV AX,OFFSET TABLE LEA AX,TABLE
没有区别
B. JMP SHORT L1 JMP NEAR PTR L1
第一条指令是短跳转,第二条指令是近跳转;
C. MOV AX,[BX] MOV AX,BX
第一条指令BX的内容作为偏移地址,而第二条指令是把BX的内容送给AX; D. SUB DX,CX CMP DX,CX
第一条指令是DX和CX相减结果送给DX,第二条指令也是把DX和CX相减,但不影响每个寄存器的内容,只影响标志位;
E.MOV [BP][DI],AL MOV DS:[BP][DI],AL
第一条指令目的操作数在堆栈段,第二条指令目的操作数在数据段。
20、系统功能调用的方法如何?举例说明。 (1)将调用参数装入指定的寄存器。 (2)如需功能调用号,把它装入AH。 (3)如需子功能调用号,把它装入AL。 (4)按中断号调用DOS或BIOS。 (5)检查返回参数是否正确。
19
例如:MOV AH,2
INT 21H
21、编程序,使:
A.CL寄存器内容取反 NOT CL
B.BX寄存器的低四位置1 OR BX,0FH C.AX寄存器的低四位清0 AND AX,0FFF0H D.CX寄存器的低四位变反 XOR CX,0FFF0H
E.用TEST指令测试DL寄存器的第3位和第6位是否为零。 TEST DL,01001000B 22、指令AND AX,OPR1 AND OPR2中,OPR1和OPR2是两个已赋值的变量,问两个AND操作有什么区别?
第一个AND是与指令,而第二个AND是逻辑与运算。
23、假定(DX)=10111001B,(CL)=0.3,(CF)=1,试确定下列各条指令单独执行后,DX中的值。
(1)SHR DX,1 005CH (2)RCR DL,1 00DCH (3)RCL DX,CL 05CCH 24、写出完成下述功能的程序段:
(1)传送25H到AL寄存器 MOV AL, 25H (2)将AL的内容乘以2 SHL AL, 1 (3)传送15H到BL寄存器 MOV BL, 15H (4)AL的内容乘以BL的内容 MUL BL
并请写出最后(AX)=? (AX)=612H =1554 25、写一程序段,求双字长数DX∶BX的相反数。 NEG DX NEG AX
SBB DX,0
26、在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (IP)←((SP),(SP)+1)
(2)执行段间返回RET指令时,执行的操作是: (IP)←((SP),(SP)+1) (CS) ←((SP)+2,(SP)+3) 27、ARY DW 10 DUP(?) ┇
MOV AL,TYPE ARY MOV BL,LENGTH ARY MOV CL,SIZE ARY
上述MOV指令序列执行后的结果是什么? (AL)=2,(BL)=10,(CL)=20 28、设某数据段: DATA SEGMENT ORG 20H NUM1=8
20