汇编复习题 仅供参考1Word下载.docx
《汇编复习题 仅供参考1Word下载.docx》由会员分享,可在线阅读,更多相关《汇编复习题 仅供参考1Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
AX”后,SP的值是(C)
A.1998HB.1FFFH C.1FFEHD.2002H
14.设SP初值为2000H,执行指令“POPBX”后,SP的值是(D)
15.执行下列指令序列后,正确的结果是(A)
MOV
AL,81Hal=81h
ADD
AL,ALal=81h+81h=02h,cf=1
ADC
AL,AL02h+02h+cf=05h
A.AL=05H B.AL=204H C.AL=04H D.AL=205H
16.下列指令被编译时会出错的是(D)mul的操作数不能为立即数
A.MULBXB.MULCLC.MULDAT1D.MUL56
17.与MOV
BX,OFFSETVAR指令完全等效的指令是(
B
)。
A、MOV
BX,VARB、LEA
BX,VAR
C、LDS
BX,VARD、MOVBX,SEGVAR
18.指令指针寄存器是(C)
A.BPB.SPC.IPD.PSW
19.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)
A.AX,BX,CX,DXB.BX,BP,SI,DI
C.SP,IP,BP,DXD.CS,DS,ES,SS
20.下列数据段中:
BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是(B)
A.6B.18C.16D.8
占用了18个字节,其中2DUP(1,2)占用了2*2=4个字节,总共占用了
3*6=18个字节
21.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是(C)
A.MOVAL,DA1B.MOVWORDPTRDA1,AX
C.MOVDA1+1,AXD.MOVBYTEPTRDA2+1,AL
22.指令MOVBYTEPTR[BX+SI],00H中目的操作数的寻址方式是(d)
A.立即寻址B.寄存器寻址
C.寄存器间接寻址D.基址变址寻址
23.指令MOVES:
[BX],AL中目的操作数的寻址方式是(c)
A.直接寻址B.寄存器寻址
24.条件转移指令JB产生程序转移的条件是(A)
A.CF=1 B.CF=0
C.CF=1和ZF=1 D.CF=1和ZF=0
25、若执行SALSI,CL后能将SI的内容乘以8,则(CL)=(B)
A、2B、3C、4D、8
26.编辑汇编语言源程序时,对于注释语句必须用英文输入法中的(B)来标示。
A.:
B.;
C.,D..
27.将AL高4位清0,应执行的指令是
(
B)
A.ANDAL,0F0H
B.ANDAL,0FH
C.ORAL,0FH
D.TESTAL,0FH
28.若程序中定义了26B的数据段data,那么程序载入内存,该data段实际占用的内存空间是(C)。
16的倍数
A、16BB、26BC、32BD、64KB
29.在8086CPU系统中一个段的容量最小为(A)。
A、16BB、64KBC、512KBD、1KB
有数据时最小为16B,没数据时最小为0
30.下列地址信息与0020H:
03EFH确定的内存地址不同的是(B)。
A、5EFHB、203H:
00EFH
C、005EH:
000FHD、0002H:
05CFH
ACD对应的物理地址都是5EFH
二、填空题
1、完成下列数制转换:
11101010B=D=H
2.在存储器分段管理中,物理地址需要____2_______个16位寄存器来存储。
3.对于指令FEESDW100DUP(0)
LENGTH=100,SIZE=200B。
4.设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?
(1)JMP
BX;
IP=______1256h_____________
(2)JMP
TABLE[BX];
IP________3280H_____________
5.设(DS)=2000H,有下列数据段,请用十六进制写出下列各字节单元的内容:
ORG2100H想知道org是什么?
XX一下
TABLEDB10,3*5,10H占三个字节
ADDRESSDDTABLEDD占四个字节,地址为2000h:
2100h
ARRAYDW2DUP(3827H,?
)占4个字,8个字节
(1)(2100H)=____10_________
(2)(2103H)=
_____00_________
(3)(2106H)=____20H__________
(4)(210CH)=
_____38H_________
这里的DS=14F8H,(2106H)=14
题目DS=2000H,所以(2106H)=20
6.已知X=-38D,Y=-64D,则[X-Y]补=____1AH_______(结果用十六进制表示)
7、设(DS)=2000H,(ES)=3000H,(SS)=4000H,(BX)=1000H,(BP)=1000H,(SI)=0001H,(DI)=0002H,(21000H)=1234H,(21002H)=5678H,(31000H)=9ABCH,(31002H)=0DEF0H,(41000H)=3456H,(41002H)=789AH
计算下列各指令中源操作数的物理地址,并指出指令执行后AX寄存器的内容。
(1)MOVAX,ES:
[1000H];
物理地址PA=
(2)MOVAX,[BP];
(3)MOVAX,[BX][SI]
物理地址PA=
(AX)=
8.计算机中8位二进制有符号数(含一位符号位)的补码表示范围是—128~127
9.若机器进行有符号数运算,执行指令:
MOVAL,0F0H
ADDAL,78H
则ADD指令执行后:
(CF)=1,(OF)=0
想知道结果也可以调试一下看看
10.8086CPU允许有256个中断源,其中定时器中断的中断类型号为08H,在中断向量表中N类型对应中断向量的地址为N×
4。
三、判断下列指令的正误
1、MULAL,BL(N)只有一个操作数
2、MOVCS,BX(n)
3、PUSHAL(N)PUSH和POP操作都是以字为单位
4、SHLAX,CX(N)以为次数要放在cl中
5、MOVAH,BYTEPTR[SI][DI](N)[SI][DI]两个都为变址寄存器
6、OUT03FCH,AX(N)
03FCH超过了255,必须用间接寻址,这里间接寻址的寄存器要用DX,
Movdx,03fch
Outdx,ax
7、SUBAX,[BX](y)
8、ANDAL,0FH(y)
9、MOV[SI],[DI](n)两个操作数不能同时为存储器
10、MOV[BX],0FFH(n)
11、MUL0AH(n)
12、CALLFARPTRS(y)
13、ADDDS,AX(n)段寄存器不可以用在算术指令中
14、ADDAL,100H(n)类型不一致
15、MOV[BX],BX(y)
16、INT1000H(n)
17、JMPSHORTPTRS(n)
18、0RAL,0FFFH(n)
19、CALLBX(y)
20、IN03H,AX(n)
四、程序分析题
1.阅读下面程序段,回答问题。
A
DB
0F8H
BDB
3
DUP(?
)
┇
LEA
DI,B
CX,3
AL,A
LOP:
SAR
AL,1
MOV
[DI],AL
INC
DI
LOOP
LOP
┇
上述程序段运行后,从B单元开始依次存放的数据是多少?
FC FEFF
F8H=11111000
右移一位变为11111100=FC
再右移一位变为11111110=FE
再右移一位变为11111111=FF
调试结果:
2、分析下面程序段的功能
……
DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
┇
LEASI,S9
LEADI,S9+1
MOVCX,5
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
01000302050407060908
3、已知BUF开始的数据区中存放有10个大、小写字母,分析下面程序段完成的功能是什么?
……
MOV
CX,10
LEA
BX,BUF
K2:
MOV
AL,[BX]
CMP
AL,‘Z’
JBE
K1
SUB
AL,20H(20H=32,大小写字母相差32)
MOV
[BX],AL
K1:
INC
BX
K2
……
实现功能:
把小写字母变为大写字母
4.分析下面程序段完成的功能是什么?
……;
(DX:
AX)联合存放了一个32位数据
MOVCL,4
SHLDX,CLDL=****0000
MOVBL,AH
SHLAX,CLAL=****0000
SHRBL,CLBL即AH的内容,AH=0000****,四个星号为原来AX的高四位
ORDL,BL
功能:
把ax的高四位写入到dx的低四位
5、分析下面程序段完成的功能是什么?
……
MOVCX,10
LOP1:
MOVAH,1
INT21H
PUSHAX
LOOPLOP1
MOVCX,10
LOP2:
POPDX
MOVAH,2
LOOPLOP2
把输入的字符逆向输出
6、以下是二进制数(bx)到十六进制数转换并显示程序的源文件BINIHEX.ASM,阅读并完成该程序。
START:
MOVCH,4bx为16位,bx要循环4次,用ch来计次数
ROTATE:
movcl,4
ROLBX,CL
MOVAL,BLbx循环左移后,原来的高四位变为低四位,把bl的值送给al,以免后面的操作影响bx的值
Andal,0fh与0fh相与,只保留低四位
ADDAL,30H转换为ASII码
CMPAL,3AHASII码大于3Ah则al的值大于9,若小于3Ah,直接输出
JLPRINTIT
Addal,07hASII码大于3Ah,A的ASII码为41h,所以要加上7,可以输出相应的ABCD....
PRINTIT:
MOVDL,AL
Movah,02h
Decch
JNZROTATEch为零时跳出循环
MOVAH,4CH
INT21H
7、以下是子程序BCDIASC,请阅读程序并完成填空。
;
将十进制的两位数的BCD码转换为ASCII码并在屏幕中间显示.
参数:
(AL)=十进制的两位数的BCD码,无出口参数
BCDIASC:
MOVAH,AL
MOVCL,4
shrah,cl;
将AH的高4位移至低4位
Andal,0fh;
保留AL的低4位
ADDAH,30H;
转变为ASCII码
Addal,30h
MOVBX,0B800H
Moves,bx
MOVBYTEPTRES:
[160*12+40*2],AH;
显示十位数
[160*12+40*2+2],AL;
显示个位数
ret;
子程序结束,返回主程序
8.下面程序通过子程序调用,将数据段中字数组ARRAY的COUNT个元素求和,并将结果送SUM单元(COUNT、SUM都是字单元),分析这段程序后补充完整程序中的空格部分。
MOVBX,OFFSETSUM
PUSHBX
MOVBX,OFFSETARRAY
MOVBX,OFFSETCOUNT
CALLSUMPRO;
调用子程序计算
…….
SUMPROPROCNEAR
PUSHAX
PUSHCX
PUSHSI
PUSHDI
PUSHBP
MOVBP,SP
MOVSI,[BP+14
]
MOVDI,[BP+
12]
MOVCX,[DI]
16]
XORAX,AX
NEXT:
ADDAX,[SI]
LOOPNEXT
MOV[
DI],AX
POP
BP
POPDI
POPSI
POPCX
POPAX
RET
SUMPROENDP
请画出用堆栈传送参数地址时,堆栈最满时的状态。
五、编程题
1、从BUF1单元开始存放有10个字节的字符串,使用串传送指令编写指令序列将BUF1中的数据复制到BUF2开始的10个字节单元。
leasi,BUF1;
si的段地址为ds
leadi,BUF2;
di的段地址为es
movcx,10
cld
repmovsb
2、编写指令序列,完成用空格符(20H)清除某一字符区的工作,字符区首地址为ARRAY,其长度为COUNT,ARRAY和COUNT均为字节存储单元。
leasi,ARRAY
moval,20h
cld
repstosb
3.编写一个显示字符串的宏定义PRINT,字符串以”$”作为结束符号,字符串首地址STRADDR为变元。
PRINTmacroSTRADDR
leadx,STRADDR
movah,09h
int21h
endm
4、编写子程序CLEAR实现清除屏幕的功能。
(课件第九章有)
movah,06h
moval,0
movbh,70h
movch,0
movcl,0
movdh,24
movdl,79
int10h
5、编写指令把12行0列到22行79列的屏面清除。
movch,12
movdh,22
int10h
6.写出采用位触发方式控制发声的子程序SOUND.
BX:
发声频率,控制脉宽
CX:
发声时间,控制音长。
Movbx,100
Inal,61h
Andal,11111100b
sound:
xoral,2
Out61h,al
Movcx,140h
Wait:
loopwait
Decbx
Jnzsound
7、已知在内存数据段中GRA开始单元连续存放着10个学生的成绩,试编程实现以下功能:
计算平均成绩(只取整数部分)存放在内存单元AVG中。
DSGSEGMENT
GRADB90,58,70,80,68,98,66,83,96,72
AVGDB?
DSGENDS
movax,DSG
movds,ax
movdx,0
leasi,GRA
next:
moval,[si]
cbw
adddx,ax
incsi
loopnext
movax,dx
movbl,10
divbl
mov[avg],al
movah,4ch
8、已知在内存数据段中STR开始单元连续存放着10个大小写字母,试编程实现以下功能:
将10个字母中的小写字母全部转换为大写字母。
STRDB“BbcDeFgHIj”
leasi,STR
cmpal,'
Z'
jbeexit
subal,20h
mov[si],al
exit:
incsi
int21h