习题一
1.在计算机内部,计算机能够直接执行的程序语言是。 A.汇编语言B.C++语言 C.机器语言D.高级语言
2.在堆栈段中,存放栈顶地址的寄存器是。 A.IP B.SP C. BX D. BP
3.指令指针寄存器IP用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向 。
A.下一条指令的首地址 B.下一条指令的地址 C.当前指令的首地址 D.当前指令的地址 4.编译程序的功能是。
A.检查源程序中的语法错误和逻辑错误 B.将源程序编译成目标程序 C.改正源程序中的语法错误
D.将高级语言源程序翻译成汇编语言源程序
5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。
A.目标程序 B.源程序 C.可执行程序 D.汇编程序 6.计算机中用来存储程序、数据等信息的记忆装置是。 A.控制器B.运算器C.CPU D.存储器
7.在宏汇编中,源程序必须通过____编译_______生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。 习题二
1 当 SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理
地址 是( )
A.30100H B.30098H C.30102H D.300FEH
2 设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是( )
A.-82、-126、-2 B.-2、-125、126 C.-2、-126、-125 D.-82、-125、125 3 标志寄存器中属于控制标志位的是( ) A. DF,OF,SF B. DF,IF,TF C. OF,CF,PF D. AF,OF,SF
4 设(AX)=4544H,在执行指令”SUB AH,AL”之后,( ) A.CF=0,OF=0 B.CF=0,OF=1 C.CF=1,OF=0 D.CF=1,OF=1
5 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为______19____________。
6 若物理地址为2D8C0H,偏移量为B6A0H,则段地址为 _2222H________。 7 设(AL)=70H,分析在SUB AL,9AH后,标志寄存器中CF、OF、ZF、PF、SF的状态。
CF=1,OF=1,,ZF=0,PF=0,SF=1 习题三
1、下列指令中,正确的一条是。
A)MOV BYTE PTR [BX],1000 B)MOV AX,[SI][DI] C)LEA BX,4[BX]
D)MOV AX,ARRAY1+ARRAY2
2、指令 SUB AX,5[BX+DI]的源操作数的寻址方式是。 A) 寄存器寻址 B) 基址+变址寻址 C) 变址寻址 D) 直接寻址
3、假设V1和V2是用DW定义的变量,下列指令中正确的是。 A)MOV V1,V2 B)MOV V1,20H
C)MOV 2000H,V2 D)MOV AL,V1
4、设在内存单元(0010H)= 12H, (0011H)= 34H,对于从0010H处取一个字的叙述正确
的是________。
A) 读出的字的值为1234H,需要访问两次存储器 B) 读出的字的值为3412H,需要访问两次存储器 C) 读出的字的值为3412H,需要访问一次存储器 D) 读出的字的值为1234H,需要访问一次存储器
5、有指令
“MOV SI,OFFSET DATA”,和它等效的指令是___LEA
SI,DATA_________。
6、对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
TABLE1 DB ?
TABLE2 DW 20 DUP(?) TABLE3 DB ?ABCD?
MOV AX,TYPE TABLE1 ; AX=① MOV BX,TYPE TABLE2 ; BX=② MOV CX,LENGTH TABLE2 ;CX=③ MOV DX,SIZE TABLE2 ; DX=④ MOV SI,LENGTH TABLE3 ; SI=⑤
AX=1,BX=2,CX=20,DX=40,SI=1. 习题四
1. MOV AL,20H MOV BL,AL ADD AL,BL SBB AL,10H CBW DIV BL
上述程序段执行后,(AH)=___10H________,(AL)=___01H_______
2. 语句”BUF DB 25”的含义是( ) A.用BUF 表示25
B.定义BUF为字节变量,初始值为25 C.从标号BUF对应的地址起分配25个单元 D.定义BUF为变量,其地址为25
3.除法指令DIV的格式中,只有一个源操作数。若其类型属性为字节,则目的操作数在_______AX__________中。
4.执行一列三条指令后,AX寄存器中的内容是( )。 MOV AX,‘8’ ADD AL,‘9’ AAA
A.0071H B.0107H C.0017H D.0077H 5.逻辑移位指令SHL用于( ) A.带符号数乘2 B.带符号数除2 C.无符号数乘2 D.无符号数除2
6. CWD指令的功能是()
A.把源操作数的符号位扩展到目的操作数中 B.把AL中的符号位扩展到AH中 C.把AH中的符号位扩展到AL中 D.把AX中的符号位扩展到DX中
7.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正
确的是( )
A. DIV BX
B. CWD
IDIV BX
C. XOR DX,DX D. CBW
DIV BX IDIV BX
8. 使AL中的操作数0,1位变反,其它位不变的指令是_____XOR_03H_______________。 9. 写出将寄存器
BX,AX 的内容互换的正确指令是
____XCHG_AX,BX___________________。
10. 设(AX)=2012H,执行CMP AX,2012H 后 (AX)= __2012H_________。 习题五
(1)设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是( )。
A.33CECH B.33CF2H C.33CF4H D.33CE8H
(2)若(AX )=-15,要得到(AX) =15应执行的指令是( )。 A.NEG AX B.NOT AX C.INC AX D.DEC AX (3)将累加器AX 内容清零的错误指令是( )。 A.AND AX,0 B.XOR AX,AX C.SUB AX,AX D.CMP AX,AX (4)填写执行下列程序段后的结果。 MOV DX,8F70H MOV AX,54EAH
OR AX,DX AND AX,DX NOT AX XOR AX,DX TEST AX,DX
(AX)=__________ 、 (DX)=__________ 、 SF=__________ OF=________、 CF=_________、 PF=_________ 、 ZF=__________ (AX)=0FFFFH,(DX)=8F70H,SF=1,OF=0,CF=0,PF=0,ZF=0 (5) DAT1 DW 12H,23H,34H,46H,57H
DAT2 DW 03H LEA BX, DAT1 ADD BX, DAT2 MOV DX,[BX] MOV AX,4[BX]
SUB AX,DX
执行上列程序段后,AX的内容为。 (AX)=2300H
(6)执行下列程序段后,AX和CF中的值是多少? STC
MOV CX,0403H MOV AX,0A433H SAR AX,CL XCHG CH,CL SHL AX,CL
(AX)=4860,CF=1
习题六
1. 已知AX=0FFFFH,DX=0001H MOV CX,2
LOP:SHL AX,1
RCL DX,1 LOOPLOP
上述程序段执行后,(DX)=0007H,(AX)=0FFFCH 2. 已知AX=78H,BX=0804H
SHR BX,1 AND BX,0F0FH MOV CX,4 LOP:XCHG BH,BL
DIV BL
SAL AX,1
LOOP LOP
上述程序段执行后,(AX)=001EH,(BX)=0402H
3.CODE SEGMENT
ASSUME CS: CODE, DS: CODE, SS: CODE ORG 100H
BEGIN: MOV AX, 01H MOV BX, 02H MOV DX, 03H MOV CX, 04H L20: INC AX ADD BX, AX SHR DX, 1 LOOPNE L20 RET
CODE ENDS END BEGIN
当执行以上程序后,AX、BX、CX、DX中的值分别是多少?:
AX=①
BX=② CX=③
DX=④
(AX)=03H,(BX)=07H,(CX)=02H,(DX)=0
4.已定义了两个字变量A和B,补充下列程序段使之完成下列功能: A.若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。 B.若两个数均为奇数,则将两数均加1后存回原变量。 C.若两个数均为偶数,则两个变量均不改变。 MOV AX,A
TEST AX,_0001H_____ JZ A_EVEN MOV BX,B
TEST BX,0001H JZ B_EVEN
_INC_AX_____________ MOV A,AX
_INC_BX__________ MOV B,BX
B_EVEN: _JMP_EXIT___________ A_EVEN: MOV BX,B TEST BX,0001H JZ EXIT
XCHG_AX,BX___________ MOV A,AX MOV B,BX EXIT:
习题七
1. 如果用调试程序DEBUG的R命令在终端上显示当前各寄存器的内容如下,请说明当前堆栈段段基址是多少?栈顶的物理地址是多少?
段基址21F0H, 物理地址31EEEH
C>DEBUG -R
AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC
2.分析下列程序段执行后,AX寄存器的内容是什么? ......
TABLE DW 10H,20H,30H,40H,50H,60H,70H,80H ENTRY DW 6 ......
MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] (AX)=0040H
3.试分析下列程序段执行后,AX和DX寄存器的内容分别是什么? ......
VAR1 DB 86H
VAR2 DW 2005H,0021H,849AH,4000H ...... MOV AL,VAR1 CBW
LEA BX,VAR2 MOV DX,2[BX] SUB AX,DX
(AX)=FF65H,(DX)=0021H
4. 试分析下列程序段,回答所提问题。 ORG 3000H
DB 11H,12H,13H,14H,15H
......
MOV BX,3000H STC ADC BX,1 SAL BL,1
INC BYTE PTR [BX]
(1)程序段执行后,3004H 单元中的内容是什么?16H
(2)程序段执行后,BX中的内容是什么?CF的值是1还是0?(BX)=3004H,CF=0 习题八
1. 分析下面的程序段,执行后AX的内容为多少?
ARRAY DW 10 DUP(2) XOR AX,AX MOV CX,0AH MOV SI,12H
NEXT:ADD AX,ARRAY[SI] SUB SI,02H
LOOP NEXT
(AX)=20//或14H
2.执行下列程序段后,给出指定寄存器的内容。 MOV AX,0 MOV BX,1 MOV CX,5
A: ADD AX,BX INC BX
LOOP A
HLT
执行后的结果为AX=__15____; BX=__ 6____。
该程序段的功能是____计算0+1+2+3+4+5_ ___________________。
3.设(AX)=1122H,(BX)=3344H,(SP)=5566H,执行如下程序段后,IP和SP的值分别是什么? SUN PROC PUSH AX ADD BX,AX
PUSH BX
POP BX RET
SUN ENDP
IP=1122H,SP=5566H
4、
执行下列程序段后,AX和CF中的值是多少? STC
MOV CX,0403H MOV AX,0A433H SAR AX,CL XCHG CH,CL
SHL AX,CL (AX)=4860H,CF=1
5、下列程序段运行后,HCOD和HCOD+1两字节单元内容是什么?
HEX DB ?0123456789ABCDEF? HCOD DB ?,? ┇
MOV BX,OFFSET HEX MOV AL,1AH MOV AH,AL
AND AL,0FH XLAT
MOV HCOD[1],AL MOV CL,12 SHR AX,CL XLAT
MOV HCOD,AL
?1?,?A?
习题九
1、CALL DWORD PTR [BX]指令是段间调用还是段内调用。它一共向堆栈中压入几个字?两个字
2、 在子程序设计时,为什么要保护和恢复现场?由于汇编语言所操作处理的
对象主要是CPU寄存器,而主程序在调用子程序时,已经占用了一定的寄存器,子程序执行完毕返回主程序后,又要保证主程序按原有状态继续正常执行,这就需要对这些寄存器的内容加以保护
3、试分析下列程序段: ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5
如果AX 和BX的内容如下: AX BX
(1)14C6H 80DCH (2)B568H 54B7H (3)42C8H 608DH
(4)D023H 9FD0H (5)9FD0H D023H
试问该程序分别在上面几种情况下执行后,程序转向哪里 L1,L1,L2,L5,L5 习题十
1、下列指令中,在指令执行后有可能影响CS值的指令数目是( )
JMP MOV RET ADD INT JC LODS CALL MUL POP
A.3 B.4 C.5 D.6 2、下面关于宏指令的叙述不正确的是( ) A.宏指令可以简化源程序的书写;
B.宏指令可以简化目标程序;
C.宏指令和子程序的存储形式和执行方式均不相同; D.从形式上看,宏指令可以扩充机器的指令系统。 3、对于下列程序段:
AGAIN:MOV ES:[DI],AL
INC DI
LOOP AGAIN
可用指令( )完成相同的功能。 A.REP MOVSB B.REP STOSB
C.REP LODSB D.REP LODSB
4、在下列指令中,隐含使用AL寄存器的指令有( )条。 AAA MOVSB MUL BH CBW SCASB XLAT
A. 2 B.3 C.4 D.5
5、假设ES段中有一个字符中串?12FG3LM5C?,其名为ARRAY。当以下程序段执行后,CX的值是。 CLD
LEA DI,ES:ARRAY MOV AL,?G? MOV CX,9
REPNE SCASB HLT
A. 0 B.5 C.4 D.9