汇编复习题 仅供参考1.docx
- 文档编号:6944731
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:15
- 大小:54.79KB
汇编复习题 仅供参考1.docx
《汇编复习题 仅供参考1.docx》由会员分享,可在线阅读,更多相关《汇编复习题 仅供参考1.docx(15页珍藏版)》请在冰豆网上搜索。
汇编复习题仅供参考1
汇编语言复习题
一、选择题
1.下面关于汇编语言源程序的说法中正确的是(B)
A.必须要有堆栈段B.一个程序可以有多个代码段
C.必须要有数据段D.只能有一个数据段
2.在汇编语言程序开发中,一般要按顺序经过(B)过程。
a.用文字编辑程序编写源程序
b.用连接程序LINK连接程序.ASM—>.OBJ-->.EXE
c.用MASM宏汇编程序,编译成目标程序
d.用DEBUG程序调试程序
A.abcdB.acbdC.adcbD.adbc
3.汇编语言编译程序MASM.EXE(编译器)编译的对象是(C)文件。
A..EXE B..OBJ C..ASM D..DOC
4.汇编语言源程序经过MASM汇编后产生(C)文件。
A..EXE B..ASM C..OBJ D..DOC
5.DEBUG调试程序时查看内存单元内容的命令是(A)
A.D B.RC.A D.E
6.DEBUG调试程序时查看寄存器内容的命令是(B)
A.D B.RC.U D.A
7.8086CPU地址总线宽度为(C)位。
A、8B、16C、20D、32
8.8086CPU数据总线宽度为(B)位。
A、8B、16C、20D、32
9.1个CPU的寻址能力为32KB,那么它的地址总线宽度为(B)。
A、13B、15C、18D、32k
10.汇编语言源程序中定义段的伪指令是(D)
A.REPT…ENDMB.PROC…ENDP
C.MACRO…ENDMD.SEGMENT…ENDS
11.汇编语言源程序中定义宏的伪指令是(C)
A.REPT…ENDMB.PROC…ENDP
C.MACRO…ENDMD.SEGMENT…ENDS
12..对于下列程序段:
AGAIN:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPAGAIN把[sI]中的内容传送给ES:
[DI]
也可用(A)指令完成同样的功能。
A.REPMOVSB串传送B.REPLODSB从串取
C.REPSTOSB存入串D.REPESCASB串扫描
13.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是(C)
A.1998HB.1FFFH C.1FFEHD.2002H
14.设SP初值为2000H,执行指令“POPBX”后,SP的值是(D)
A.1998HB.1FFFH C.1FFEHD.2002H
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.寄存器寻址
C.寄存器间接寻址D.基址变址寻址
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];物理地址PA=
(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
MOV CX,3
MOV 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
LOP:
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
LOOP 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
INT21H
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
INT21H
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;显示十位数
MOVBYTEPTRES:
[160*12+40*2+2],AL;显示个位数
ret;子程序结束,返回主程序
8.下面程序通过子程序调用,将数据段中字数组ARRAY的COUNT个元素求和,并将结果送SUM单元(COUNT、SUM都是字单元),分析这段程序后补充完整程序中的空格部分。
……
MOVBX,OFFSETSUM
PUSHBX
MOVBX,OFFSETARRAY
PUSHBX
MOVBX,OFFSETCOUNT
PUSHBX
CALLSUMPRO;调用子程序计算
…….
SUMPROPROCNEAR
PUSHAX
PUSHCX
PUSHSI
PUSHDI
PUSHBP
MOVBP,SP
MOVSI,[BP+14 ]
MOVDI,[BP+ 12]
MOVCX,[DI]
MOVDI,[BP+ 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
movcx,10
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列的屏面清除。
movah,06h
moval,0
movbh,70h
movch,12
movcl,0
movdh,22
movdl,79
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
movcx,10
leasi,GRA
next:
moval,[si]
cbw
adddx,ax
incsi
loopnext
movax,dx
movbl,10
divbl
mov[avg],al
movah,4ch
int21h
8、已知在内存数据段中STR开始单元连续存放着10个大小写字母,试编程实现以下功能:
将10个字母中的小写字母全部转换为大写字母。
DSGSEGMENT
STRDB“BbcDeFgHIj”
DSGENDS
movax,DSG
movds,ax
leasi,STR
next:
moval,[si]
cmpal,'Z'
jbeexit
subal,20h
mov[si],al
exit:
incsi
loopnext
movah,4ch
int21h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编复习题 仅供参考1 汇编 复习题 仅供参考