贵州大学微机原理与接口技术试卷与答案doc内容摘要:

00H+100H=29100; ( 4)在指令 MOV AX, VAL 中,源操作数字段的寻 址方式是直接寻址,其物理地址值 =( DS) *10H+50H =29000H+50H=29050H; . .. ( 5)在指令 MOV AX, [BX] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值 =( DS) *10H +( BX) =29000H+100H=29100H; ( 6)在指令 MOV AX, ES: [BX] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值 =( ES) *10H+( BX) =21000H+100H=21100H; ( 7)在指令 MOV AX, [BP] 中,源操作数字段的寻址方式是 寄存器间接寻址,其物理地址值 =( SS) *10H +( BP) =15000H+10H=15010H; ( 8)在指令 MOV AX, [SI] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值 =( DS) *10H +( SI) =29000H+0A0H=290A0H; ( 9)在指令 MOV AX, [BX+10] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值 =( DS) *10H+( BX) +0AH= 29000H+100H+0AH =2910AH; ( 10)在指令 MOV AX, VAL[BX] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值 =( DS) *10H+( BX) +50H= 29000H+100H+50H= 29150H; ( 11)在指令 MOV AX, [BX][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值 =( DS) *10H+( BX) +( SI) =29000H+100H+0A0H =291A0H; ( 12)在指令 MOV AX, [BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值 =( SS) *10H+( BP) +( SI) =15000H+10H+0A0H =150B0H。 ( 1) MOV SI, 200 ( 2) MOV CX, DATA[SI] ( 3) ADD AX, [BX+DI] ( 4) AND AX, BX ( 5) MOV [SI], AX ( 6) PUSHF . .. 答: ( 1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址; ( 2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址; ( 3)目的操作数的寻址方式是寄存器寻址, 源操作数的寻址方式是基址变址寻址; ( 4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址; ( 5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址; ( 6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址; MOV AX, 2020H 和 MOV AX, DS:[2020H] 的区别。 答: 指令 MOV AX, 2020H 是将立即数 2020H 送 AX寄存器,而指令 MOV AX, DS:[2010H]是将 DS 段有效地址为 2020H 的两个单元的内容送 AX。 ( 1) MOV AL, [BX+5] ( 2) MOV [BP+5], AX ( 3) INC BYTE PTR [SI+3] ( 4) MOV DL, ES:[BX+DI] ( 5) MOV BX, [BX+SI+2] 答: ( 1)指令 MOV AL, [BX+5]中内存操作数的所在地址 =( DS) *10H+( BX) +5; . .. ( 2)指令 MOV [BP+5], AX中内存操作数的所在地址 =( SS) *10H+( BP) +5和( SS) *10H+( BP) +6; ( 3)指令 INC BYTE PTR[SI+3]中内存操作数的所在地址 =( DS) +( SI) +3; ( 4)指令 MOV DL, ES:[BX+DI]中内存操作数的所在地址 =( ES) *10H+( BX)+( DI); ( 5)指令 MOV BX, [BX+SI+2]中内存操作数的所在地址 =( DS) *10H+( BX) +( SI) +2 和( DS) *10H+( BX) +( SI) +3; ,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原错误指令 ((8)、 (13)除外 )期望实现的操作。 ( 1) MOV AL, BX ( 9) MOV ES, 3278H ( 2) MOV AL, SL ( 10) PUSH AL ( 3) INC [BX] ( 11) POP [BX] ( 4) MOV 5, AL ( 12) MOV [1A8H], 23DH ( 5) MOV [BX], [SI] ( 13) PUSH IP ( 6) MOV BL, F5H ( 14) MOV [AX], 23DH ( 7) MOV DX, 2020H ( 15) SHL AX, 5 ( 8) POP CS ( 16) MUL AX, BX 答: ( 1) MOV AL,BX 错,源操作数为字类型,目的操作数为字节类型,二者不一致。 应改为: MOV AX,BX 或 MOV AL,BL ; ( 2) MOV AL,SL 错, SI 寄存器不能分为高 8 位和低 8位使用,即没有 SL 寄存器。 应改为: MOV AX,SI . .. ( 3) INC [BX] 错,未指定操作数的类型。 应改为: INC BYTE PTR [BX] ( 4) MOV 5,AL 错,目的操作数使用了立即数,在指令中一般不允许。 应改为: MOV DS:[5],AL ( 5) MOV [BX],[SI] 错,源操作数和目的操作数均为内存单元,不允许。 应改为: MOV AX,[SI] MOV [BX],AX ( 6) MOV BL,F5H 错,源操作数错,以 A~ F开头的数字前应加 0。 应改为: MOV BL,0F5H ( 7) MOV DX,2020H 正确。 ( 8) POP CS 错,不能将栈顶数据弹至 CS中。 ( 9) MOV ES, 3278H 错 ,立即数不能直接送 ES寄存器。 应改为: MOV AX,3278H MOV ES,AX ( 10) PUSH AL 错,栈操作不能按字节进行。 应改为: PUSH AX ( 11) POP [BX] 正确。 ( 12) MOV [1A8H],23DH 错,源操作数是立即数,目的操作数必须使用寄存器指出。 应改为: MOV BX, 1A8H MOV [BX],23DH ( 13) PUSH IP 错,不能用 IP 寄存器做源操作数。 ( 14) MOV [AX],23DH 错,不能用 AX 寄存器间接寻址。 应 改为: MOV BX, AX . .. MOV [BX], 23DH ( 15) SHL AX,5 错,不能用大于己于 1的立即数指出移位位数。 应改为: MOV CL, 5 SHL AX, CL ( 16) MUL AX,BX 错,目的操作数 AX是隐含的,不能在指令中写出。 应改为:MUL BX SP 的初值为 2020H, AX=3000H, BX=5000H,试问 : ( 1)执行指令 PUSH AX 后 (SP)=。 ( 2)再执行 PUSH BX 及 POP AX 后 (SP)=。 (AX)=。 (BX)=。 答: ( 1)执行指令 PUSH AX 后 (SP)=2020H2=1FFEH。 ( 2)再执行 PUSH BX 及 POP AX 后 (SP)=1FFEH, (AX)=5000H, (BX)=5000H [2020H]送 [1000H]中,用指令 :MOV [1000H], [2020H]是否正确。 如果不正确,应用什么方法。 答: 把 [2020H]送 [1000H]中,用指令 MOV [1000H], [2020H]不正确,应改为 : MOV AX,[2020H] MOV [1000H],AX 200中减去 AL 中的内容,用 SUB 200, AL 是否正确。 如果不正确,应用什么方法。 答: 想从 200 中减去 AL 中的内容,用 SUB 200, AL 不正确,应改为: MOV BL,200 SUB BL,AL 12分别写出实现如下功能的程序段 (1)双字减法(被减数 7B1D2A79H,减数 53E2345FH)。 . .. (2)使用移位指令实现一个字乘 18的运算。 (3)使用移位指令实现一个字除以 10 的运算。 (4)将 AX 中间 8位 , BX 低四位, DX高四位拼成一个新字。 (5)将数据段中以 BX为偏移地址的连续四个单元的内容颠倒过来 (6)将 BX 中的四位压缩 BCD 数用非压缩 BCD 数形式顺序放在 AL、 BL、 CL、 DL中。 答: (1)双字减法的程序段是: MOV AX, 2A79H ;被减数的低位字送 AX SUB AX, 345FH ;低位字相减,结果送 AX MOV BX, 7B1DH ;被减数的高位字送 BX SBB BX, 53E2H ;高位字相减处并减去低位字相减产生的借位,结果送 BX (2)使用移位指令实现一个字乘 18的程序段是: MOV AX, 05F7H ;被乘数送 AX SHL AX, 1 ;被乘数乘以 2,结果在 AX 中 MOV BX, AX ;被乘数乘以 2的结果暂存到 BX MOV CL, 3 ;设置移位位数 3 SHL AX, CL ;被乘数再乘以 8(共乘以 16),结果在 AX 中 ADD AX, BX ;被乘数再乘以 18,结果在 AX 中 (3)使用移位指令实现一个字除以 10 的运算,必须将 X/10 拆分成多项的和,而每一项都应是非的某次幂的倒数。 利用等比级数的前 N 项和公 式,可求出 A0=X/8,公比 Q=1/4,故 X/10=X/8X/32+X/128X/512+..., . .. 所求的程序段是: MOV AX,FE00H ;被除数送 AX MOV CL,3 ;设置移位位数 3 SHR AX,CL ;被乘数除以 8,结果在 AX 中 MOV BX,AX ;被乘数除以 8的结果暂存到 BX MOV CL,2 ;设置移位位数 2 SHR AX,CL ;被乘数除以 4(累计除 32),结果在 AX 中 SUB BX,AX ;被除数 /8被除数 /32,结果在 BX 中 MOV CL,2 ;设置移位位数 2 SHR AX,CL ;被乘数除以 4(累计除 128),结果在 AX中 ADD BX,AX ;被除数 /8被除数 /32+被除数 /128,结果在 BX中 MOV CL,2 ;设置移位位数 2 SHR AX,CL ;被乘数除以 4(累计除 512),结果在 AX中 SUB BX,AX ;被除数 /8被除数 /32+被除数 /128被除数 /512,结果在 BX中 (4) 将 AX 中间 8位, BX 低四位, DX 高四位拼成一个新字的程序段是: AND DX,0F000H ;将 DX 的低 12 位清零,高 4 位不变 AND AX,0FF0H ;将 AX 的低 4位清零,高 4位清零,中间 8 位不变 AND BX,0FH ;将 BX 的高 12 位清零,低 4 位不变 ADD AX,BX . .. ADD AX,DX ;按要求组成一个新字,结果放在 AX中。 (5) 将数据段中以 BX为偏移地址的连续四个单元的内容颠倒过来的程序段是: MOV AL,[BX] ; 数据段中 BX为偏移地址的字单元内容送 AX XCHG AL,[BX+3] ;数据段中 BX+3 为偏移地址的字单元内容与 AX的内容交换 MOV [BX],AL ;数据段中 BX+3 为偏移地址的字单元内容送 BX为偏移地址的字单元 MOV AL,[BX+1] ;数据段中 BX+1 为偏移地址的字单元内容送 AX XCHG AL,[BX+2] ;数据段中 BX+2 为偏移地址的字单元内容与 AX的内容交换 MOV [BX+1],AL ;数据。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。