vg微机原理与接口技术试题库(含答案)ma内容摘要:

)在指令 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 ;数据段中 BX+2 为偏移地址的字单元内容送 BX+1 为偏移地址的字单元 (6)将 BX 中的四位压缩 BCD 数用非压缩 BCD 数形式顺序放在 AL、 BL、 CL、 DL中的程序段是: MOV DL,BL ;四位压缩 BCD数的低位字节送 DL AND DL,0FH ; DL 的高 4 位清零,得四位非压缩 BCD数的最低位,放入。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。