《汇编语言》练习册答案.docx
- 文档编号:23095681
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:34
- 大小:53.51KB
《汇编语言》练习册答案.docx
《《汇编语言》练习册答案.docx》由会员分享,可在线阅读,更多相关《《汇编语言》练习册答案.docx(34页珍藏版)》请在冰豆网上搜索。
《汇编语言》练习册答案
《汇编语言练习册答案》
第一套
一、填空题:
1、MOVAX,BX设(AX)=3064H,(BX)=1234H
指令执行后(AX)=_1234H_,(BX)=_1234H_
2、ADDCL,BH设(CL)=29H,(BH)=4DH
指令执行后(CL)=___76H______,(BH)=__4DH_______
3、XCHGBX,(BP+SI)
设(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,OPR2的物理地址=2F000+0200+0046=2F246
则指令执行后(BX)=4154H,(2F246H)=6F30H
4、LESDI,[BX]设(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H则指令执行后(DI)=05AEH,(ES)=4000H5、LDSSI,[10H]设(DS)=C000H,(C0010H)=0180H,(C0012H)=2000H,则指令执行后(SI)=0180H,(DS)=2000H
6、MULAL,BL
AAM
如指令执行前,(AL)=07H,(BL)=09H
执行AAM后,(AH)=06H,(AL)=03H
7、MOVAX,[BX][DI]如(DS)=2100H,(BX)=0158H,(DI)=10A5H
则物理地址=221FDH
8、MOVAX,MASK[BX][SI]
如果(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H,
则物理地址=33250H
9、在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,
试问该程序的第一字的物理地址是AAA40H
10、MOVAL,11H
XORAL,3
上述指令执行后(AL)=12H
11、MOVCL,5
SAR[DI],CL
设指令执行前:
(DS)=0F800H,(DI)=180AH,(0F980AH)=0064H
则指令执行后:
(0F980AH)=0003H,CF=0
12、已知(BCDI)=1834,(BCD2)=2789,BCD1和BCD2均为用压缩的BCD码表示的十进制数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为
(BCD1)=34,(BCD1+1)=18
(BCD2)=89,(BCD2+1)=27
欲使以下指令序列实现,(BCD3)(BCD1)+(BCD2)的功能(请在横线上添上适当的语句)
MOVAL,BCD1
ADDAL,BCD2
DAA
MOVBCD3,AL
MOVAL,BCD1+1
ADCAL,BCD2+1
DAA
MOVBCD3+1,AL
二、试根据以下要求写出相应的汇编语言指令
1、把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
ADDDX,BX
2、用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
ADDAL,[BX+SI]
3、用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
ADD[BX+0B2H],CX
4、用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。
ADD[0524H],2A59H
5、把数0B5H与(AL)相加,并把结果送回AL中。
ADDAL,0B5H
三、图示题:
(第1题10分,第2、3题,每题5分,共20分)
1、已知堆栈寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化,过程示意图(标出存储单元的物理地址)。
FFAB0H
执行PUSH前
2、画出以下指令汇编后存储情况示意图。
DATA_BYTEDB10,4,10H
DATA_WORDDW100,100H,-5
DATA-DWDD3*20,0FFFDH
DATA_BYTE
0A
04
10
DATA_WORD
64
00
00
10
FB
FF
DATA_DW
3C
00
00
00
FD
FF
00
00
3、画出以下指令汇编后存储情况示意图
ARRAY1DB2DUP(0,1,2,?
)
ARRAY2DB100DUP(?
)
ARRAY1
00
01
02
ARRAY2
--
00
01
02
--
--
·
·
·
--
四、请设置一个数据段DATASG,其中定义以下字符变量或数据变量。
(1)FLD1B为字符串变量:
‘personalcomputer’:
(2)FLD2B为十进制数字节变量:
32:
(3)FLD3B为十六进制数字节变量:
20:
(4)FLD4B为二进制数字节变量:
01011001;
(5)FLD5B为数字的ASCII字符节变量:
32654;
(6)FLD6B为10个零的字节变量;
(7)FLD7B为零件名(ASCII码)及其数量(十进制)的表格:
PART120
PART250
(8)FLD1W为十六进制数字节变量:
FFF0;
(9)FLD2W为二进制数字变量:
01011001;
(10)LD4W为包括5个十进制数的字节变量:
5,6,7,8,9;
(11)LD5W为5个零的字变量
DATASGSEGMENT
FLD1BDB‘personalcomputer’
FLD2BDB32
FLD3BDB20H
FLD4BDB01011001B
FLD5BDB‘32654’
FLD6BDB10DUP(0)
FLD7BDB‘20’,50
FLD1WDBF0H,FFH
FLD2WDW01011001B
LD4WDB5,6,7,8,9
LD5WDW5DUP(0)
DATASGENDS
五、写出框架:
1、按下面的要求写出程序的框架。
(1)、数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;
(2)、堆栈段从小段开始,段组名为STACK;
(3)、代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;
(4)、程序结束。
ORG0E000H
data_segSEGMENT
arr1DW100DUP(?
)
arr2EQUWORDPTRarr1
data_segENDS
stack_segSEGMENTPATASTACK
…
stack_segENDS
code_segSEGMENT
mainPROCFAR
ASSUMECS:
code_seg,DS:
data_seg,SS:
stack_seg
ORG1000H
start:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,data_seg
MOVDS,AX
MOVAX,stack_seg
MOVSS,AX
…
…
RET
mainENDP
code_segENDS
ENDstart
2、写出“调用程序和子程序不在同一代码段中”框架
segxSEGMENT
…
sebtPROCFAR
…
RET
sebtENDP
…
CALLsebt
…
segxENDS
segySEGMENT
…
CALLsebt
…
segyENDS
六、编程题:
1、编一个程序,对键盘输入的小写字母用大写字母显示出来。
BEGIN:
MOVAH,1
INT21H
CMPAL,’a’
JBSTOP
CMPAL,’z’
JASTOP
SUBAL,20H
MOVDL,AL
MOVAH,2
INT21H
JMPBEGIN
STOP:
RET
第二套
一、填空题:
1、MOVCX,DX设(CX)=1064H,(DX)=6789H
指令执行后(CX)=__6789H_______,(DX)=__6789H_______
2、ADDAL,CH设(AL)=34H,(CH)=0D4H
指令执行后(AL)=__08H_____,(CH)=___0D4H______
3、XCHGAX,(BP+SI)
设(AX)=2030H,(BP)=0200H,(SI)=0023H,(SS)=2F00H,(2F223H)=5A21H,OPR2的物理地址=2F000+0200+0023=2F223H
则指令执行后(AX)=5A21H,(2F223H)=2030H
4、LESSI,[BX]设(DS)=C000H,(BX)=0300H,(0C0300H)=0123H,(0C0302H)=5410H则指令执行后(SI)=0123H,(ES)=5410H
5、LDSSI,[30H]设(DS)=B000H,(B0030H)=5620H,(B0032H)=4500H,则指令执行后(SI)=5620H,(DS)=4500H
6、ADDAL,BL
AAA
如指令执行前,(AX)=0535H,(BL)=39H
执行ADDAL,BL后,(AL)=6EH
执行AAA后,(AX)=0604H
7、MOVAX,[BX][DI]如(DS)=3000H,(BX)=3145H,(DI)=1FC0H
则物理地址=35105H
8、MOVAX,MASK[BX][DI]
如果(DS)=C000H,(BX)=1200H,(DI)=5600H,MASK=0360H,
则物理地址=C6B60H
9、在一个程序开始执行以前(CS)=0BB00H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=5ED0H,
试问该程序的第一字的物理地址是C0ED0H
10、MOVAL,0BFH
ANDAL,0FCH
上述指令执行后(AL)=BCH
11、MOVCL,2
SHLSI,CL
设指令执行前:
(SI)=1450H
则指令执行后:
(SI)=5140H,CF=0
12、已知(BCDI)=1834,(BCD2)=2789,BCD1和BCD2均为用压缩的BCD码表示的十进制数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为
(BCD1)=34,(BCD1+1)=18
(BCD2)=89,(BCD2+1)=27
欲使以下指令序列实现,(BCD3)(BCD1)-(BCD2)的功能(请在横线上添上适当的语句)
MOVAL,BCD1
SUBAL,BCD2
DAS
MOVBCD3,AL
MOVAL,BCD1+1
SBBAL,BCD2+1
DAS
MOVBCD3+1,AL
二、试根据以下要求写出相应的汇编语言指令
1、把AX寄存器和CX寄存器的内容相加,结果存入AX寄存器中。
ADDAX,CX
2、用寄存器BX和DI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
ADDAL,[BX+DI]
3、用寄存器BX和位移量0DDH的寄存器相对寻址方式把存储器中的一个字和(DX)相加,并把结果送回存储器中。
ADD[BX+0DDH],DX
4、用位移量为5600H的直接寻址方式把存储器中的一个字与数8765H相加,并把结果送回该存储单元中。
ADD[5600H],8765H
5、把数0E8H与(AH)相加,并把结果送回AH中。
ADDAH,0E8H
三、图示题:
1、已知堆栈寄存器ss的内容是0E000H,堆栈指针寄存器SP的内容是02FFH,先执行两条把1234H和5678H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
E02FFH
执行PUSH前
E02FBH
78H
E02FCH
56H
E02FDH
34H
E02FEH
12H
E02FFH
执行PUSH后
E02FDH
E02FEH
34H
12H
E02FFH
执行POP后
2、画出以下指令汇编后存储情况示意图。
MESSAGEDB‘HELLOW’
MESSA1DB‘AB’
MESSA2DW‘AB’
MESSAGE
‘H’
‘E’
‘L’
MESSA1
MESSA2
‘L’
‘O’
‘W’
‘A’
‘B’
‘B’
‘A’
3、画出以下指令汇编后存储情况示意图
ARR1DW2DUP(3,4,?
)
ARR2DW10DUP(?
)
ARR1
03
00
04
00
--
--
03
00
04
00
--
--
ARR2
--
·
·
·
--
四、请设置一个数据段DATASG,其中定义以下字符变量或数据变量。
(1)FLD1B为字符串变量:
‘CPROGRAME’:
(2)FLD2B为十六进制数字节变量:
10:
(3)FLD3B为十进制数字节变量:
50:
(4)FLD4B为二进制数字节变量:
10101010;
(5)FLD5B为数字的ASCII字符节变量:
9361256;
(6)FLD6B为20个零的字节变量;
(7)FLD7B为零件名(ASCII码)及其数量(十进制)的表格:
PART120
PART250
(8)FLD1W为十六进制数字变量:
BBCC53;
(9)FLD2W为二进制数字变量:
01011001;
(10)LD4W为包括5个十进制数的字变量:
1,8,2,4,9;
(11)LD5W为5个零的字变量
DATASGSEGMENT
FLD1BDB‘CPROGRAME’
FLD2BDB10H
FLD3BDB50
FLD4BDB10101010B
FLD5BDB‘9361256’
FLD6BDB20DUP(0)
FLD7BDB‘20’,50
FLD1WDWBBH,CCH,53H
FLD2WDW01011001B
LD4WDW1,8,2,4,9
LD5WDW5DUP(0)
DATASGENDS
五、写出框架:
1、按下面的要求写出程序的框架。
(1)、数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;
(2)、堆栈段从小段开始,段组名为STACK;
(3)、代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;
(4)、程序结束。
ORG0E000H
data_segSEGMENT
arr1DW100DUP(?
)
arr2EQUWORDPTRarr1
data_segENDS
stack_segSEGMENTPATASTACK
…
stack_segENDS
code_segSEGMENT
mainPROCFAR
ASSUMECS:
code_seg,DS:
data_seg,SS:
stack_seg
ORG1000H
start:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,data_seg
MOVDS,AX
MOVAX,stack_seg
MOVSS,AX
…
…
RET
mainENDP
code_segENDS
ENDstart
2、写出“调用程序和子程序在同一代码段中”框架
MAINPROCFAR
…
CALLSUBR1
…
RET
MAINENDP
SUBR1PROCNEAR
…
RET
SUBR1ENDP
六、编程题:
1、编一个程序,从键盘接受一个小写字母,然后找出它的前导字符和后续字符再按顺序显示出来。
BEGIN:
MOVAH,1
INT21H
CMPAL,’a’
JBSTOP
CMPAL,’z’
JASTOP
DECAL
MOVDL,AL
MOVCX,3
DISPLAY:
MOVAH,2
INT21H
INCDL
LOOPDISPLAY
STOP:
RET
第三套
一、填空题:
1、MOVBX,AX设(AX)=5800H,(BX)=6C7BH
指令执行后(BX)=__6C7BH_______,(AX)=__6C7BH_______
2、ADDAL,BH设(AL)=3DH,(BH)=5FH
指令执行后(AL)=__9CH_____,(BH)=__5FH_______
3、XCHGBX,(BP+SI)
设(BX)=7D00H,(BP)=0520H,(SI)=0100H,(SS)=3C00H,(3C620H)=5FABH,OPR2的物理地址=3C000+0520+0100=3C620
则指令执行后(BX)=5FABH,(3C620H)=7D00H
4、LESDI,[BX]设(DS)=D000H,(BX)=07DBH,(0D07DBH)=0321H,(0D07DDH)=6000H则指令执行后(DI)=0321H,(ES)=6000H5、LDSSI,[78H]设(DS)=1000H,(10078H)=0A00H,(1007AH)=B000H,则指令执行后(SI)=0A00H,(DS)=B000H
6、MULAL,DL
AAM
如指令执行前,(AL)=08H,(DL)=05H
执行AAM后,(AH)=04H,(AL)=00H
7、MOVAX,[BX][DI]如(DS)=5300H,(BX)=02A0H,(DI)=29FCH
则物理地址=559C9CH
8、MOVAX,MASK[BX][SI]
如果(DS)=8000H,(BX)=4500H,(SI)=0876H,MASK=0745H,
则物理地址=854BBH
9、在一个程序开始执行以前(CS)=0C376H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=8BFAH,
试问该程序的第一字的物理地址是0CC35AH
10、MOVAL,43H
ORAL,20H
上述指令执行后(AL)=63H
11、MOVCL,5
SAL[DI],CL
设指令执行前:
(DS)=0F800H,(DI)=180AH,(0F980AH)=0064H
则指令执行后:
(0F980AH)=0C80H,CF=00H
12、已知(BCD3)=1234,(BCD4)=2345,BCD3和BCD4均为用压缩的BCD码表示的十进制数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为
(BCD3)=34,(BCD3+1)=12
(BCD4)=45,(BCD4+1)=23
欲使以下指令序列实现,(BCD1)(BCD3)+(BCD4)的功能(请在横线上添上适当的语句)
MOVAL,BCD3
ADDAL,BCD4
DAA
MOVBCD1,AL
MOVAL,BCD3+1
ADCAL,BCD4+1
DAA
MOVBCD1+1,AL
二、试根据以下要求写出相应的汇编语言指令
1、把CX寄存器和AX寄存器的内容相加,结果存入CX寄存器中。
ADDCX,AX
2、用寄存器BX和DI的基址变址寻址方式把存储器中的一个字节与DH寄存器的内容相加,并把结果送到DH寄存器中。
ADDDH,[BX+DI]
3、用寄存器BX和位移量0D1H的寄存器相对寻址方式把存储器中的一个字和(AX)相加,并把结果送回存储器中。
ADD[BX+0D1H],AX
4、用位移量为08A0H的直接寻址方式把存储器中的一个字与数0A760H相加,并把结果送回该存储单元中。
ADD[08A0H],0A760H
5、把数0FH与(AL)相加,并把结果送回AL中。
ADDAL,0FH
三、图示题:
1、已知堆栈寄存器ss的内容是0AA00H,堆栈指针寄存器SP的内容是01EDH,先执行两条把1357H和2468H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
AA1EDH
执行PUSH前
AA1E9H
68H
AA1EAH
24H
AA1EBH
57H
AA1ECH
13H
AA1EDH
执行PUSH后
AA1EBH
AA1ECH
57H
13H
AA1EDH
执行POP后
2、画出以下指令汇编后存储情况示意图。
DATA_BYTEDB67,01110001B,10H,0FDH
DATA_WORDDW127,10H,-1
DATA-DWDD2+3*5,0FEDCH
DATA_BYTE
43
71
10
FD
DATA_WORD
7F
00
10
00
FF
FF
DATA_DW
11
00
00
00
DC
FE
00
00
3、画出以下指令汇编后存储情况示意图
ABCDB0,?
?
?
0
DEFDW?
52,?
ARRAYDB100DUP(0,2DUP(1,2),0,3)
ABC
00
--
--
--
00
DEF
ARRAY
--
--
34
00
--
--
00
01
02
01
02
00
03
·
·
·
四、请设置一个数据段DATASG,其中定义以下字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 练习 答案