1、 (BCD2)=89, (BCD2+1)=27 欲使以下指令序列实现,(BCD3) (BCD1)+(BCD2)的功能(请在横线上添上适当的语句)MOV AL, BCD1 ADD AL,BCD2 DAA MOV BCD3, AL MOV AL, BCD1+1 ADC AL,BCD2+1 MOV BCD3+1, AL二、试根据以下要求写出相应的汇编语言指令1、把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。ADD DX,BX2、用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。ADD AL,BX+SI3、用寄存器BX和位移量0B2H
2、的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。ADD BX+0B2H,CX4、用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。ADD 0524H,2A59H5、把数0B5H与(AL)相加,并把结果送回AL中。ADD AL,0B5H三、图示题:(第1题10分,第2、3题,每题5分,共20分) 1、已知堆栈寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化,过程示意图(标出存储单元的物理地址)
3、。FFAB0H执行PUSH前2、画出以下指令汇编后存储情况示意图。DATA_BYTE DB 10 , 4 , 10HDATA_WORD DW 100,100H,-5DATA-DW DD 3*20 , 0FFFDHDATA_BYTE0A0410DATA_WORD6400FBFFDATA_DW3CFD3、画出以下指令汇编后存储情况示意图 ARRAY1 DB 2 DUP(0,1,2,?) ARRAY2 DB 100 DUP(?ARRAY10102ARRAY2-四、请设置一个数据段DATASG,其中定义以下字符变量或数据变量。(1)FLD1B为字符串变量:personal computer:(2)FL
4、D2B为十进制数字节变量:32:(3)FLD3B为十六进制数字节变量:20:(4)FLD4B为二进制数字节变量:01011001;(5)FLD5B为数字的ASCII字符节变量:32654;(6)FLD6B为10个零的字节变量;(7)FLD7B为零件名(ASCII码)及其数量(十进制)的表格: PART1 20 PART2 50(8)FLD1W为十六进制数字节变量:FFF0;(9)FLD2W为二进制数字变量:(10)LD4W为包括5个十进制数的字节变量:5,6,7,8,9;(11) LD5W为5个零的字变量DATASG SEGMENTFLD1B DB personal computerFLD2B
5、 DB 32FLD3B DB 20HFLD4B DB 01011001BFLD5B DB 32654FLD6B DB 10 DUP(0)FLD7B DB 20,50 FLD1W DB F0H,FFHFLD2W DW 01011001BLD4W DB 5,6,7,8,9LD5W DW 5 DUP(0)DATASG ENDS五、写出框架: 1、按下面的要求写出程序的框架。(1)、数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;(2)、堆栈段从小段开始,段组名为STACK;(3)、代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;(4)
6、、程序结束。ORG 0E000Hdata_seg SEGMENT arr1 DW 100 DUP(? arr2 EQU WORD PTR arr1data_seg ENDSstack_seg SEGMENT PATA STACK stack_seg ENDScode_seg SEGMENTmain PROC FAR ASSUME CS: code_seg,DS: data_seg,SS: stack_seg ORG 1000Hstart: PUSH DS SUB AX,AX PUSH AXMOV AX, data_seg MOV DS,AX MOV AX, stack_seg MOV SS,A
7、X RETmain ENDPcode_seg ENDS END start2、写出“调用程序和子程序不在同一代码段中”框架segx SEGMENT sebt PROC FAR RETsebt ENDP CALL sebtsegx ENDSsegy SEGMENTsegy ENDS六、编程题:1、编一个程序,对键盘输入的小写字母用大写字母显示出来。BEGIN: MOV AH,1 INT 21H CMP AL,a JB STOP CMP AL,z JA STOP SUB AL,20H MOV DL,AL MOV AH,2 JMP BEGINSTOP: RET第二套1、MOV CX,DX 设(CX)
8、=1064H,(DX)=6789H指令执行后(CX)=_ 6789H _,(DX)=_6789H _2、ADD AL,CH 设(AL)=34H,(CH)=0D4H指令执行后(AL)=_08H_,(CH)=_0D4H _3、XCHG AX,(BP+SI) 设(AX)=2030H,(BP)=0200H,(SI)=0023H,(SS)=2F00H, (2F223H)=5A21H,OPR2的物理地址=2F000+0200+0023=2F223H则指令执行后(AX)= 5A21H ,(2F223H)= 2030H 4、LES SI,BX设(DS)=C000H, (BX)=0300H,(0C0300H)=
9、0123H, (0C0302H)=5410H 则指令执行后 (SI)= 0123H,(ES)= 5410H5、LDS SI,30H设(DS)=B000H, (B0030H)=5620H,(B0032H)=4500H, 则指令执行后 (SI)= 5620H ,(DS)= 4500H 6、ADD AL, BLAAA 如指令执行前,(AX)=0535H, (BL)=39H 执行ADD AL, BL后,(AL)= 6EH 执行AAA后,(AX)= 0604H 7、MOV AX,BXDI 如(DS)=3000H,(BX)=3145H,(DI)=1FC0H 则物理地址= 35105H 8、MOV AX,
10、MASKBXDI如果(DS)=C000H,(BX)=1200H,(DI)=5600H,MASK=0360H, 则物理地址= C6B60H 9、在一个程序开始执行以前(CS)=0BB00H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=5ED0H,试问该程序的第一字的物理地址是 C0ED0H 10、MOV AL,0BFH AND AL,0FCH上述指令执行后(AL)= BCH 11、MOV CL,2 SHL SI,CL(SI)=1450H(SI)= 5140H ,CF= 0 欲使以下指令序列实现,(BCD3) (BCD1)-(BCD2)的功能(请在横线上添上适当的语句) SUB A
11、L,BCD2 DAS SBB AL,BCD2+1 1、把AX寄存器和CX寄存器的内容相加,结果存入AX寄存器中。ADD AX,CX2、用寄存器BX和DI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。ADD AL,BX+DI3、用寄存器BX和位移量0DDH的寄存器相对寻址方式把存储器中的一个字和(DX)相加,并把结果送回存储器中。ADD BX+0DDH,DX4、用位移量为5600H的直接寻址方式把存储器中的一个字与数8765H相加,并把结果送回该存储单元中。ADD 5600H,8765H5、把数0E8H与(AH)相加,并把结果送回AH中。ADD AH,0
12、E8H 1、已知堆栈寄存器ss的内容是0E000H,堆栈指针寄存器SP的内容是02FFH,先执行两条把1234H和5678H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。E02FFHE02FBH 78HE02FCH56HE02FDH34HE02FEH12H执行PUSH后执行POP后MESSAGE DB HELLOW MESSA1 DB ABMESSA2 DW ABMESSAGEHELMESSA1MESSA2OWAB ARR1 DW 2 DUP(3,4,?ARR2 DW 10 DUP(?ARR103ARR2C PROGRAME:(
13、2)FLD2B为十六进制数字节变量:10:(3)FLD3B为十进制数字节变量:50:10101010;9361256;(6)FLD6B为20个零的字节变量;(8)FLD1W为十六进制数字变量:BBCC53;(10)LD4W为包括5个十进制数的字变量:1,8,2,4,9;FLD1B DB C PROGRAMEFLD2B DB 10HFLD3B DB 50FLD4B DB 10101010BFLD5B DB 9361256FLD6B DB 20 DUP(0)FLD1W DW BBH,CCH,53HLD4W DW 1,8,2,4,92、写出“调用程序和子程序在同一代码段中”框架MAIN PROC F
14、AR CALL SUBR1MAIN ENDPSUBR1 PROC NEARSUBR1 ENDP1、编一个程序,从键盘接受一个小写字母,然后找出它的前导字符和后续字符再按顺序显示出来。 DEC AL MOV CX,3DISPLAY:MOV AH,2 INC DL LOOP DISPLAY第三套1、MOV BX, AX 设(AX)=5800H,(BX)=6C7BH指令执行后(BX)=_ 6C7BH _,(AX)=_ 6C7BH _2、ADD AL,BH 设(AL)=3DH,(BH)=5FH指令执行后(AL)=_9CH_,(BH)=_5FH _设(BX)=7D00H,(BP)=0520H,(SI)=
15、0100H,(SS)=3C00H, (3C620H)=5FABH,OPR2的物理地址=3C000+0520+0100=3C620则指令执行后(BX)= 5FABH ,(3C620H)= 7D00H 4、LES DI,BX设(DS)=D000H, (BX)=07DBH,(0D07DBH)=0321H, (0D07DDH)=6000H 则指令执行后 (DI)=0321H ,(ES)= 6000H 5、LDS SI,78H设(DS)=1000H, (10078H)=0A00H,(1007AH)=B000H, 则指令执行后 (SI)= 0A00H ,(DS)= B000H 6、MUL AL, DL 如
16、指令执行前,(AL)=08H, (DL)=05H执行AAM后,(AH)= 04H ,(AL)= 00H 7、MOV AX,BXDI 如(DS)=5300H,(BX)=02A0H,(DI)=29FCH 则物理地址= 559C9CH 如果(DS)=8000H,(BX)=4500H,(SI)=0876H,MASK=0745H, 则物理地址= 854BBH 9、在一个程序开始执行以前(CS)=0C376H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=8BFAH,试问该程序的第一字的物理地址是 0CC35AH 10、MOV AL,43H OR AL,20H上述指令执行后(AL)= 63H
17、 SAL DI,CL(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)的功能(请在横线上添上适当的语句)MOV AL, BCD3 ADD AL,BCD4 MOV BCD1, AL MOV AL, BCD3+1 ADC AL,BCD4+1 MOV BCD
18、1+1, AL1、把CX寄存器和AX寄存器的内容相加,结果存入CX寄存器中。ADD CX,AX2、用寄存器BX和DI的基址变址寻址方式把存储器中的一个字节与DH寄存器的内容相加,并把结果送到DH寄存器中。ADD DH,BX+DI3、用寄存器BX和位移量0D1H的寄存器相对寻址方式把存储器中的一个字和(AX)相加,并把结果送回存储器中。ADD BX+0D1H,AX4、用位移量为08A0H的直接寻址方式把存储器中的一个字与数0A760H相加,并把结果送回该存储单元中。ADD 08A0H,0A760H5、把数0FH与(AL)相加,并把结果送回AL中。ADD AL,0FH 1、已知堆栈寄存器ss的内容
19、是0AA00H,堆栈指针寄存器SP的内容是01EDH,先执行两条把1357H和2468H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。AA1EDHAA1E9H 68HAA1EAH24HAA1EBH57HAA1ECH13HDATA_BYTE DB 67 ,01110001B , 10H ,0FDHDATA_WORD DW 127,10H,-1DATA-DW DD 2+3*5 , 0FEDCH 43717F11DCFE ABC DB 0,?,?,0 DEF DW ?,52,?ARRAY DB 100 DUP(0,2 DUP(1,2),0,3)ABCDEFARRAY34四、请设置一个数据段DATASG,其中定义以下字符
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2