8086汇编语言复习题解答.docx
- 文档编号:25325277
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:19
- 大小:46.12KB
8086汇编语言复习题解答.docx
《8086汇编语言复习题解答.docx》由会员分享,可在线阅读,更多相关《8086汇编语言复习题解答.docx(19页珍藏版)》请在冰豆网上搜索。
8086汇编语言复习题解答
8086/8088汇编语言习题解答
第一章
1.1、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编语言编制程序的事例。
1.2、试完成下列数制间的转换
⑴、十进制数转换为
8位二
进制数
十进制:
100
对应
二进制:
01100100B
十进制:
56
对应
二进制:
00111000B
十进制:
111
对应
二进制:
01101111B
十进制:
120
对应
二进制:
01111000B
十进制:
70
对应
二进制:
01000110B
⑵、8位二进制数(无符号数)转换为十进制数
二进制:
01010101B
对应
十进制:
85
二进制:
10101010B
对应
十进制:
170
二进制:
11110000B
对应
十进制:
240
二进制:
00001111B
对应
十进制:
15
⑶、十进制数转换为十六进制数
十进制
:
40
对应
二进制:
00101000B
十进制:
80
对应
二进制:
01010000B
十进制:
105
对应
二进制:
01101001B
十进制:
114
对应
二进制:
01101101B
十进制:
207
对应
二进制:
11001111B
二进制补码:
01111000
对应的十进制值数真值:
+120
二进制补码:
11011001
对应的十进制值数真值:
-39
二进制补码:
10000001
对应的十进制值数真值:
-127
二进制补码:
10001000
对应的十进制值数真值:
-120
二进制补码:
00100111
对应的十进制值数真值:
+39
二进制补码:
11110000
对应的十进制值数真值:
-16
1.4、由键盘输入字符通常都是以该字符的ASCII码形式表示的。
若现在从键盘上输入十六进制数0〜F,那么应如何处理才能把十六进制转换为4位二进制
数0000〜1111.
答:
将键盘输入的数0〜F的ASCII码,每输入一个字符,减去30H后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000〜1111.
1.5、试分别判断下列各组数据中哪个数据最大?
哪个最小?
1、A=0.101BB=0,101DC=0,101H
2、A=1011BB=1011DC=1011H
答:
第①组:
A=1X21+1X23=0.625
B=0.101
13
C=1X161+163=0.0625+0.00024414=0.06274414
所以A最大,C最小
第②组,E最大,A=E最小
1.6、现有一个二进制数10110110.若将该数看着是无符号数、原码表示的
带符号数、补码表示的带符号数,它对应的十进制数的真值是多少
10110110.的原码带符号数的十进制是:
-54
10110110.补码表示的带符号数的十进制是:
+74
1.7、下列各组数据均为十进制数,先将各数据转换为补码表示的带符号数,然后用补码的加减运算分别完成下列各小题,并用十六进制数形式回答运算结果。
1、58+36②、(-58)+36③、58+(-36)④、(-58)+(-36)
⑤、58-36⑥、(-58)-36⑦、58-(-36)⑧、(-58)-(-36)
答:
①、58+36的运算结果是:
00111010+00010100=01001110=01011110
2、(-58)+36的运算结果是:
11000110+00010100=11101010=-000101001
3、58+(-36)的运算结果是:
00111010+11011100=00010110
4、(-58)+(-36)的运算结果是:
11000110+10100010=10100010
5、58-36的运算结果是:
00111010+11011100=00010110
6、(-58)-36的运算结果是:
11000110+10100010=10100010
7、58-(-36)的运算结果是:
00111010+00010100=01001110=01011110
8、(-58)-(-36)的运算结果是:
11000110+00010100=11101010=-000101001
第二章
2.1、试说明8086/8088CPU中有哪些寄存器?
各有什么用途?
答:
寄存器AXAL:
在乘法指令中,存放乘数和乘积;
在除法指令中,存放被除数和商;
在未组合BCD码运算的校正指令中
在某些串操作指令(LODSSTOSSCAS中
在输入输出令中作数据寄存器
寄存器AH在LAHF指令中作目的寄存器
寄存器AL:
在组合型BCD码的加减法校正指令中
在XLAT指令中作目的寄存器
寄存器BX在XLAT指令中基址寄存器
寄存器CX在循环指令中作循环次数计数器
寄存器CL在移位指令中作移位次数计数器
寄存器DX:
在字数据的乘法和除法指令中辅助累加器
寄存器SP在堆栈操作中作堆栈指计
寄存器SI在串操作指令中作源变址寄存器
寄存器DI在串操作指令中作目的变址寄存器
2.2、试说明8086/8088CPU中标志寄存器各标志位的意义?
答:
8086/8088CPU中标志寄存器各标志位的意义是:
CF:
进位标志
PF:
奇遇标志
AF:
辅助进位标志
ZF:
零值标志
SF:
符号位标志
TF:
单步标志
IF:
中断允许标志
DF:
方向标志
OF:
溢出标志
2.3、哪些操作只能隐含使用某个段寄存器,而不能用其他寄存器替代?
哪些操作除隐含使用某个段寄存器外,还可以用其他段寄存器替代?
答:
在“取指令”、“堆栈操作”、“存目的串”三操作时,只能分别使
用隐含段寄存器“CS'、“SS'“ES',不能用其他寄存器替代;
在“取源串”、“以BP作基址”、“存取一般变量”三操作时,除了可分别使用隐含段寄存器“DS'、“SS'“DS外,还可分别使用“CS
SS、ES”,
2.4、8086/8088系列微机在存储器中寻找存储单元时,逻辑地址由哪两部分组成?
答:
在8086/8088系列微机在存储器中寻找存储单元时,逻辑地址由段基值和偏移量两部分组成,它们都是16位无符号二进制数。
2.5、设IBMPC微机内存某一单元的物理地址是12345H试完成下列不同的逻辑地址表示:
1、1234H:
0005_H;EA=g基值+DISP=12340H+0005H=12345H
2、1200H:
0345H;EA=g基值+DISP=12000H+0345H=12345H
2.6、假设某用户程序装入内存后,(SS=0950H,(SP)=64H,试问该用户程序的堆栈底部(字单元)物理地址是是多少?
2.7、设堆栈段寄存器(SS=3E4BH程序中设置堆栈长度为200个字节。
试计算出堆栈底部字单元物理地址,堆栈指针SP初始值(即堆栈中没有数据时)
和SP初始值指向的物理地址。
2.8、设某用户程序(SF)=30H,(AX=1234H,(DS=5678H=如现有两条指令:
PUSHAX
PUSHDS
试冋两条指令执行后,图2.18中各单兀的数据是多少?
(SP)=?
答:
(SP)=30H-4H=2CH
2.9、在IBM-PC微机上,分别进行下列8位二进制数的运算后,标志寄
存器中OFZF、SF、CF的值各是多少?
1、10101011+01010101②、11011010+11101101
3、01010101-00111110④、10110011-01100010
2.10、设(SP)=50H
PUSHAX
PUSHBX
PUSHCX
执行上述三条指令后,(SP)=44H。
2.11、设(SP)=6EH
PO申
POPAX
执行上述两条指令后,(SP)=72HQ
第三章
3.1、试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:
①、AND
AX,0FFH
;立即数寻址
②、AND
BL,[0FFH]
;直接寻址
③、MOV
DS,AX
;寄存器寻址
④、CMP
[SI],CX
;奇存器间接寻址
⑤、MOV
DS:
[0FFH],CL
;带前缀的直接寻址
⑥、SUB
[BP][SI],AH
;基址变址寻址
⑦、ADC
AX,0ABH[BX]
;基址寻址
⑧、OR
AX,-35[BX][DI]
;基址变址寻址
⑨、PUSH
DS
;寄存器寻址
3.2、试分别指出下列各指令语句的语法是否有错,若有错,指明是什么错误。
①、MOV
[BX][BP],AX
;错,BX与BP必须二选一
②、TEST
[BP],BL
;正确
③、ADD
[SI],DA_BYTE
;错,源目操作数不能同时为存储器
④、AND
DH,DL
;错,同一寄存器高、低字节不能与
⑤、CMP
CL,1234H
;正确
⑥、SHR
[BX][DI],3
;正确
⑦、NOT
CX,AX
;错,NOT指令只有一个操作数
⑧、LEA
DS,35[SI]
;正确
⑨、INC
CX,1
;正确
⑩、PUSH
45[DI]
;正确
3.3、下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF
分别是什么状态?
MOV
DL,,86
ADD
DL,0AAH
答:
以上两条指令执行后:
CF=
AF=
ZF=
SF=
OF=
答:
3.5、已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H
(CX>=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,单
元(09226H)=00F6H,(09228H)=1E40H(1E4F6H=091DH下各指标令或程
序段分别执行后的结果如何?
①、MOV
CL,20H[DI][SI]
②、MOV
[BP][DI],CX
③、LEA
BX,20H[BX][SI]
MOV
AX,2[BX]
④、LDS
SI,[BX][DI]
MOV
[SI],BX
⑤、XCHG
CX,32H[BX]
XCHG
AX,[SI]
3.6、已知(SS)=0915H(DS)=0930H(SI)=0A0H
(DI)
=1C0H(BX80H,(BP)=470H.现有一指令
“MOVAX,OPRD”若源操作数的物理地址为095C0H试用4种不同寻址方式该写此指令(要求上述每个已知条件至少要使用一次)。
3.7、已知(
DS)=1234H(SI)=124H(12464H)=30ABH(12484H)
=464H
MOVAX,[SI]
MOV[SI+22H],1200H
LDSSI,[SI+20H]
ADDAX,[SI]
上述程序执行后:
(DS)=,(SI)=(AX)=
3.8、已知(AX)=0A5C6H,(CX)=0F03H,CF=1
RCL
AX,CL
AND
AH,CH
RCR
AX,CL
上述二条指令执行后:
(AX)=,CF=
3.9、已知(AX)
=0FC77H,(CX)=504H,CF=1
SAR
AX,CL
XCHG
CH,CL
SHL
AX,CL
(BX)二
上述二条指令执行后:
(AX)=,CF=
3.10、已知(
AX)=1234H
MOV
BX,AX
NEG
BX
ADD
AX,BX
上述二条指令执行后:
(AX)
3.11、已知(AX)=4321H
INC
AX
NEG
AX
DEC
AX
NEG
AX
上述几条指令执行后:
(AX)
3.12、已知(
AX)
=0A33AH,
(DX)=0F0F0H
AND
AH,
DL
XOR
AL,
DH
NEG
AH
NOT
AL
上述几条指令执行后:
(AX)
3.13、已知(
AX)
=0FF60H,
CF=1
MOV
DX,
96
XOR
DH,
0FFH
SBB
AX,
DX
上述几条指令执行后:
(AX)
CF=
3.14、试按下列要求分别编制程序段:
①、把标志寄存器中符号位SF置’1'
2、寄存器AL中高低4位相互换
3、由寄存器AX,BX组成一个32位带符号数(AX中存高16位,试求这个数的负数)
4、现有三个字节存储单元A、B、C。
在不使用ADD和ADC旨令的情况下,实现(A)+(B)送Co
5、用一条指令把CX中的整数转变成奇数(若原来是奇数,则CX看数据不变;若原来是偶数,则(CX)+1形成奇数。
6、根据AX中有0的位对BX中对应位变反,其余各位保持不变
3.15、试给出下列各指令的机器目标代码:
①、
MOV
BL,12H[SI]
②、
MOV
12H[SI],BL
③、
SAL
DX,1
④、
ADD
0ABH[BP][DI],1234H
第四章
4.1、已知下列程序段
DATASEGMENT
DB1
DB
12H,34H,0,56H
DW1
DW
78H,90H,0AB46H,1234H
ADR1
DW
DB1
ADR2
DW
DW1
BUF
DB
5DUP(0)
DATAENDS
COSEGSEGMENT
ASSUMECS:
COSEG,DS:
DATA
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
ORG
30H
START:
XOR
CX,CX
MOV
CL,3
ADD
ADR1,CX
SUB
ADR2,CX
MOV
BX,ADR2
MOV
DI,ADR2
MOV
AL,DB1[BX]
MOV
BUF[DI],AL
MOV
AX,DW1[BX][SI]
MOV
WORDPTRBUF,AX
COSEGENDS
ENDSTART
上述程序段运行结束后,BUF中各字节单元的内容是什么?
答:
AX:
AC27,
BX:
0704,
CX:
0003,
DX:
0000
SI:
0000,
DI:
0704,
BP:
0000,
SP:
0040
DS:
139B,
ES:
139B,
SS:
13B3,
CS:
13AB
IP:
0053
DS:
0030:
CC111400189B13
4.2、某数据段中有
COUNT1EQU16H
COUNT2DW16H
下面两条指令有何异同:
MOVAX,COUNT1
MOVBX,COUNT2
答:
AX:
0016H,BX=1084H
COUNT1EQU16H是赋值语句
MO\BX,COUNT2是定义的地址指针,在1084H中才放字16H.
4.3、下面各题中有语法错误,试分别用两种办法修改题中语句,使它们在汇编时都能分别获得通过:
⑴、M1DW5060H
MOVBL,M1
⑵、M2EQU0H
MOVM,2AL
⑶、M3DW‘ABCD'
⑷、M4DB1234
⑸、DATA1SEGMENT
DA1DW1234H
DA2DW5678H
DATA2ENDS
CODESEGMENT
ASSUMECS:
CODEDSDATA1
MO\BXDA2
CODEENDS
4.4、设已定义数据段:
DATASEGMENT
DA1
DB
XX,XX
DA2
DB
XX,XX
ADRR
DW
DA1,DA2
DATA
ENDS
为使ADRR+字存储单元中存内容为0022H,上述方框中应填写什么语句?
4.5、下面的程序段中,有数据为3000H的字存储单元有几个?
它们的偏移量分别是多小?
ORG30H
DA1DB0,'0',30H,0,30H
DWDA1
4.6、下面的语句中有数据0102H的字存储单元有多少?
4.7、下述指令执行后,寄存器DS和SI的内容分别是多少?
ADDR
DW1234H,5678H,0ABCDH
LDSSI,ADDR+1
4.8、设某数据段为:
DATA
SEGMENT
ORG20H
NUM1=8
MUM2=NUM1+10H
DA1
DB‘IBMPC'
DB0AH,0DH
CUNT
EQU$=DA1
DA2
DW‘IB','M','PC',0A0DH
DATA
ENDS
上述数据段定义后,DA1和DA2的偏移量,CUNT勺值以及DA2+5字节单元的内容分别是多少?
DATA1
SEGMENTWORDPUBLIC
DA1
DB20HDUP(0)
DATA1
ENDS
DATA2
SEGMENTPAGEPUBLIC
4.9、某源程序有如下数据段:
DA2
DB
20HDUP(0)
DATA2
ENDS
设DA1物理地址是134CEH那么DATA2段基值,DA2的偏移量分别是多少?
4.10、下述程序段执行后,寄存器AX,BX和CX的内容分别是多少?
ORG
0202H
DA_WORDDW
20H
MOV
AX,DA_WORD
MOV
BX,OFFSETDA_WORD
MOV
CL,BYTEPTRDA_WORD+1
MOV
CH,TYBEDA_WORD
4.11、下述程序段执行后,寄存器BX和CX的内容分别是多少?
NUM1=20*20
NUM2EQU400H
REL1DWNUM1LENUM2,EQNUM2
MOVBX,REL2
MOVCX,WORDPTRREL2
NUMEQU945H
ALPH=35*27
MOVAX,ALPHLENUM
MOVBX,ALPHGTNUM
4.13、下述语句汇编后,$+20H和$+40H中的$值分别是多少
ORG34H
NUM
DA1DB10H,$+20H,30H,$+490H
DA2DA1+NUM+40H
4.14、试用数据定义语句DW改写下述语句,使它们在存储器中有完全相同的存储情况。
DA1DB‘ABCDEFGHI
DA2DB12H,34H,56H,78H,9AH,0BCH
4.15、现有两个程序摸块:
TITLE
PROC
TITLE
PROC2
DATA1
SEGMENT
DATA2
SEGMEND
DA1
DB10H
DUP(0)
DA2
DW
10HDUP(0)
DATA1
ENDS
DATA2
ENDS
CODE1SEGMENT
CODE2
SEGMENT
ASSUMECS:
CODE1
ASSUMECS:
CODE2
ASSUMEDS:
DATA1
ASSUMEDS:
DATA2
START:
SUB2
PROCFAR
MO\AL,DA1+2
RET
MOVDX,DA2+2
CALLSUB2
SUB2ENDP
CODE1ENDSCODE2ENDS
ENDATARTENDSUB2
在上述两个程序模块汇编、连接后,准备从START处开始执行。
但在汇
编连接期间出现语法错误,为使上述两程序模块能正确汇编、连接并执行,试修改和补充有关语句。
4.16、指出下列程序中哪几条语句有语法错误,并指出是什么错误(如符号有没
有定义)
序号
指令语句
1
DATA
SEGMENT
2
VAR1
DB0,3,5H,0B7H
3
VAR2
DB12H,A4H,5BH
4
VAR3
DB“ABCDEFGH”IJ
5
VAR4
DW1234H,”XY”,0ACDH,87H
6
VAR5
DBDUP(?
)
7
DATA
ENDS
8
STACK1
SEGMENDPARASTACK
9
DW10HDUP(0)
10
STACK1
ENDS
11
COSEG
SEGMENT
12
ASSUMECS:
COSEG,DS:
DATA,SS:
STACK1
13
START
MOVBX,DATA
14
MOVDS,BX
16
MOV
BX,OFFSETVAR3
17
MOV
AX,VAR1+2
18
MOV
[SI],0ABH
19
SHL
AX,3
20
ADD
VAR1,VAR2+2
21
MOV
[BX],[SI]
22
MOV
AH,4CH
23
INT
21H
24
CODE
ENDS
25
END
START
4.17、试用段定义伪指令编制一个小练习程序。
待程序调试通过后,试对下列情况作一试验,观察它们在汇编、连接、调试时有何变化?
⑴、在组合类型中没有指定”STACK的段;
⑵、有2〜3个数据段组合类型中分别设置PUBLIC和COMMON
⑶、在定位类型中有的段设置为WOR或BYTE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 汇编语言 复习题 解答