您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《汇编语言》练习册答案
1《汇编语言练习册答案》第一套一、填空题: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)=6F30H4、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)=2000H6、MULAL,BLAAM如指令执行前,(AL)=07H,(BL)=09H执行AAM后,(AH)=06H,(AL)=03H7、MOVAX,[BX][DI]如(DS)=2100H,(BX)=0158H,(DI)=10A5H则物理地址=221FDH8、MOVAX,MASK[BX][SI]如果(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H,则物理地址=33250H9、在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,试问该程序的第一字的物理地址是AAA40H10、MOVAL,11HXORAL,3上述指令执行后(AL)=12H11、MOVCL,5SAR[DI],CL设指令执行前:(DS)=0F800H,(DI)=180AH,(0F980AH)=0064H则指令执行后:(0F980AH)=0003H,CF=012、已知(BCDI)=1834,(BCD2)=2789,BCD1和BCD2均为用压缩的BCD码表示的十进制数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为(BCD1)=34,(BCD1+1)=18(BCD2)=89,(BCD2+1)=27欲使以下指令序列实现,(BCD3)(BCD1)+(BCD2)的功能(请在横线上添上适当的语句)MOVAL,BCD1ADDAL,BCD22DAAMOVBCD3,ALMOVAL,BCD1+1ADCAL,BCD2+1DAAMOVBCD3+1,AL二、试根据以下要求写出相应的汇编语言指令1、把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。ADDDX,BX2、用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。ADDAL,[BX+SI]3、用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。ADD[BX+0B2H],CX4、用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。ADD[0524H],2A59H5、把数0B5H与(AL)相加,并把结果送回AL中。ADDAL,0B5H三、图示题:(第1题10分,第2、3题,每题5分,共20分)1、已知堆栈寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化,过程示意图(标出存储单元的物理地址)。2、画出以下指令汇编后存储情况示意图。DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5DATA-DWDD3*20,0FFFDHDATA_BYTE0AFFAB0H执行PUSH前FFAAEHFFAAFH57H80HFFAB0H执行POP后FFAACH79HFFAADH0FHFFAAEH57HFFAAFH80HFFAB0H执行PUSH后30410DATA_WORD64000010FBFFDATA_DW3C000000FDFF00003、画出以下指令汇编后存储情况示意图ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP(?)ARRAY1000102ARRAY2--000102----···--四、请设置一个数据段DATASG,其中定义以下字符变量或数据变量。(1)FLD1B为字符串变量:‘personalcomputer’:(2)FLD2B为十进制数字节变量:32:100个字节4(3)FLD3B为十六进制数字节变量:20:(4)FLD4B为二进制数字节变量:01011001;(5)FLD5B为数字的ASCII字符节变量:32654;(6)FLD6B为10个零的字节变量;(7)FLD7B为零件名(ASCII码)及其数量(十进制)的表格:PART120PART250(8)FLD1W为十六进制数字节变量:FFF0;(9)FLD2W为二进制数字变量:01011001;(10)LD4W为包括5个十进制数的字节变量:5,6,7,8,9;(11)LD5W为5个零的字变量DATASGSEGMENTFLD1BDB‘personalcomputer’FLD2BDB32FLD3BDB20HFLD4BDB01011001BFLD5BDB‘32654’FLD6BDB10DUP(0)FLD7BDB‘20’,50FLD1WDBF0H,FFHFLD2WDW01011001BLD4WDB5,6,7,8,9LD5WDW5DUP(0)DATASGENDS五、写出框架:1、按下面的要求写出程序的框架。(1)、数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;(2)、堆栈段从小段开始,段组名为STACK;(3)、代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;(4)、程序结束。ORG0E000Hdata_segSEGMENTarr1DW100DUP(?)arr2EQUWORDPTRarr1data_segENDSstack_segSEGMENTPATASTACK…stack_segENDScode_segSEGMENTmainPROCFARASSUMECS:code_seg,DS:data_seg,SS:stack_segORG1000H5start:PUSHDSSUBAX,AXPUSHAXMOVAX,data_segMOVDS,AXMOVAX,stack_segMOVSS,AX……RETmainENDPcode_segENDSENDstart2、写出“调用程序和子程序不在同一代码段中”框架segxSEGMENT…sebtPROCFAR…RETsebtENDP…CALLsebt…segxENDSsegySEGMENT…CALLsebt…segyENDS六、编程题:1、编一个程序,对键盘输入的小写字母用大写字母显示出来。BEGIN:MOVAH,1INT21HCMPAL,’a’JBSTOPCMPAL,’z’JASTOPSUBAL,20HMOVDL,ALMOVAH,2INT21HJMPBEGIN6STOP: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)=2030H4、LESSI,[BX]设(DS)=C000H,(BX)=0300H,(0C0300H)=0123H,(0C0302H)=5410H则指令执行后(SI)=0123H,(ES)=5410H5、LDSSI,[30H]设(DS)=B000H,(B0030H)=5620H,(B0032H)=4500H,则指令执行后(SI)=5620H,(DS)=4500H6、ADDAL,BLAAA如指令执行前,(AX)=0535H,(BL)=39H执行ADDAL,BL后,(AL)=6EH执行AAA后,(AX)=0604H7、MOVAX,[BX][DI]如(DS)=3000H,(BX)=3145H,(DI)=1FC0H则物理地址=35105H8、MOVAX,MASK[BX][DI]如果(DS)=C000H,(BX)=1200H,(DI)=5600H,MASK=0360H,则物理地址=C6B60H9、在一个程序开始执行以前(CS)=0BB00H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=5ED0H,试问该程序的第一字的物理地址是C0ED0H10、MOVAL,0BFHANDAL,0FCH上述指令执行后(AL)=BCH11、MOVCL,2SHLSI,CL设指令执行前:(SI)=1450H则指令执行后:(SI)=5140H,CF=012、已知(BCDI)=1834,(BCD2)=2789,BCD1和BCD2均为用压缩的BCD码表示的十进制数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为(BCD1)=34,(BCD1+1)=18(BCD2)=89,(BCD2+1)=27欲使以下指令序列实现,(BCD3)(BCD1)-(BCD2)的功能(请在横线上添上适当的语句)MOVAL,BCD17SUBAL,BCD2DASMOVBCD3,ALMOVAL,BCD1+1SBBAL,BCD2+1DASMOVBCD3+1,AL二、试根据以下要求写出相应的汇编语言指令1、把AX寄存器和CX寄存器的内容相加,结果存入AX寄存器中。ADDAX,CX2、用寄存器BX和DI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。ADDAL,[BX+DI]3、用寄存器BX和位移量0DDH的寄存器相对寻址方式把存储器中的一个字和(DX)相加,并把结果送回存储器中。ADD[BX+0DDH],DX4、用位移量为5600H的直接寻址方式把存储器中的一个字与数8765H相加,并把结果送回该存储单元中。ADD[5600H],8765H5、把数0E8H与(AH)相加,并把结果送回AH中。ADDAH,0E8H三、图示题:1、已知堆栈寄存器ss的内容是0E000H,堆栈指针寄存器SP的内容是02FFH,先执行两条把1234H和5678H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。2、画出以下指令汇编后存储情况示意图。MESSAGEDB‘HELLOW’MESSA1DB‘AB’MESSA2DW‘AB’E02FFH执行PUSH前E02FDHE02FEH34H12HE02FFH执行POP后E02FBH78HE02FCH56HE02FDH34HE02FEH12HE02FFH执行PUSH后8MESSAGE‘H’‘E’‘L’MESSA1MESSA2‘L’‘O’‘W’‘A’‘B’‘B’‘A’3、画出以下指令汇编后存储情况示意图ARR1DW2DUP(3,4,?)ARR2DW10DUP(?)ARR103000400----03000400----ARR2--···--四、请设置一个数据段DATASG,其中定义以下字符变量或数据变量。(1)FLD1B为字符串变量:‘CPROGRAME’:(2)FLD2B为十六进制数字节变量:10:(3)FLD3B
本文标题:《汇编语言》练习册答案
链接地址:https://www.777doc.com/doc-7312638 .html