微机原理与接口技术第三版吴宁,冯博琴试题库(含答案)
更新时间:2023-09-18 17:38:01 阅读量: 幼儿教育 文档下载
1. 假定(BX)=637DH,(SI)=2A9BH,位移量D=3237H,试确定在以下各种寻址方式下的有效地址是什么? (1)立即寻址 (2)直接寻址
(3)使用BX的寄存器寻址 (4)使用BX的间接寻址 (5)使用BX的寄存器相对寻址 (6)基址变址寻址 (7)相对基址变址寻址
答:(1)立即数寻址的有效地址是当前IP的内容;
(2)直接寻址,若使用位移量D=3237H进行,则有效地址为3237H; (3)使用BX的寄存器寻址时,操作数在BX寄存器中,因此无有效地址; (4)使用BX的间接寻址时,有效地址在BX寄存器中,即有效地址=637DH; (5)使用BX的寄存器相对寻址的有效地址=(BX)+D=637DH+3237H=95B4H; (6)基址变址寻址的有效地址=(BX)+(SI)=637DH+2A9BH=8E18H; (7)相对基址变址寻址的有效地址=(BX)+(SI)+D=C050H;
2. 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:
(1)寄存器间接寻址 (2)寄存器相对寻址 (3)基址变址寻址
答:(1)使用寄存器间接寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOV BX,BLOCK ADD BX,12 MOV DX,[BX]
(2)使用寄存器相对寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOV BX,BLOCK MOV DX,[BX+12]
(3)使用基址变址寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK MOV SI,12 MOV DX,[BX+SI]
3. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H] (4)MOV AX,[BX] (5)MOV AX,[BX+1100] (6)MOV AX,[BX+SI] (7)MOV AX,[BX+SI+1100]
答:(1)指令MOV AX,1200H执行完后AX寄存器的内容为1200H; (2)指令MOV AX,BX执行完后AX寄存器的内容为0100H;
(3)指令MOV AX,[1200H]是将从物理地址=(DS)*10H+1200H=21200H开始的两个单元内容送AX,执行完后AX寄存器的内容为4C2AH;
(4)指令MOV AX,[BX]是将从物理地址=(DS)*10H+(BX)=20100H开始的两个单元内容送AX,故执行完后AX寄存器的内容为3412H;
(5)指令MOV AX,[BX+1100]是将从物理地址=(DS)*10H+(BX)+1100H=21200H开始的两个单元内容送AX,故执行完后AX寄存器的内容为4C2AH;
(6)指令MOV AX,[BX+SI]是将从物理地址=(DS)*10H+(BX)+(SI)=20102H开始的两个单元内容送AX,故执行完后AX寄存器的内容为7856H;
(7)指令MOV AX,[BX+SI+1100]是将从物理地址=(DS)*10H+(BX)+(SI)+1100H=21202H开始的两个单元内容送AX,故执行完后AX寄存器的内容为65B7H;
4.假设已知(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)= 0100H,(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?
(1) MOV AX,0ABH (2) MOV AX,BX (3) MOV AX,[100H] (4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX] (7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10] (10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,[BP][SI]
答:(1)在指令 MOV AX,0ABH 中,源操作数字段的寻址方式是立即数寻址,其物理地址值=(CS)*10H+(IP);
(2)在指令 MOV AX,BX 中,源操作数字段的寻址方式是寄存器寻址,操作数在BX中,无物理地址;
(3)在指令 MOV AX,[100H] 中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+100 =29000H+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 5.分别指出下列指令中的源操作数和目的操作数的寻址方式。 (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)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址; 6.试述指令MOV AX,2010H和MOV AX,DS:[2010H] 的区别。
答:指令MOV AX,2010H是将立即数2010H送AX寄存器,而指令MOV AX,DS:[2010H]是将DS段有效地址为2010H的两个单元的内容送AX。
7.写出以下指令中内存操作数的所在地址。 (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.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原错误指令((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,2000H (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,2000H 正确。
(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 9.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:
(1)执行指令PUSH AX后 (SP)=?
(2)再执行PUSH BX及POP AX后 (SP)=?(AX)=?(BX)=? 答:(1)执行指令PUSH AX后 (SP)=2000H-2=1FFEH;
(2)再执行PUSH BX及POP AX后 (SP)=1FFEH, (AX)=5000H, (BX)=5000H
10.要想完成把[2000H]送[1000H]中,用指令:MOV [1000H],[2000H]是否正确?如果不正确,应用什么方法?
答:把[2000H]送[1000H]中,用指令 MOV [1000H],[2000H]不正确,应改为:MOV AX,[2000H]
MOV [1000H],AX 11.假如想从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/8-X/32+X/128-X/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数的最低位,放入DL中 MOV CL,4 ;设置移位位数4
SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次低位位于BL的低4位 MOV CH,BL ;将BL的内容暂存到CH中保留
AND CH,0FH ;CH的高4位清零,得四位非压缩BCD数的次低位,放CH中 MOV CL,4 ;设置移位位数4
SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次高位位于BL的低4位 MOV AL,BL ;将BL的内容暂存到AL中保留
AND BL,0FH ;BL的高4位清零,得四位非压缩BCD数的次高位,放BL中 MOV CL,4 ;设置移位位数4
SHR AL,CL ;使四位压缩BCD数的最高位位于AL的低4位,得四位非压缩BCD数的次高
;位,放入BL中
MOV CL,CH ;将四位非压缩BCD数的次低位移入CL中
10.编写一个程序,要求运行时屏幕显示‘BELL’,同时响铃一次(响铃的ASCII码为07)。 答:所求程序为: Code SEGMENT ASSUME CS:code Start: MOV DL, 42H MOV AH, 2 INT 21H MOV DL, 45H MOV AH, 2 INT 21H MOV DL, 4CH MOV AH, 2 INT 21H MOV DL, 4CH MOV AH, 2 INT 21H MOV DL, 7 MOV AH, 2 INT 21H MOV AH, 4CH INT 21H Code ENDS END Start
11.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X、Y和Z,试编制一完整的程序计算 X+Y+Z,并将结果送X。
答:所求程序为:
X_SEG SEGMENT X DW 12eH X_SEG ENDS Y_SEG SEGMENT Y DW 4d2H Y_SEG ENDS
Z_SEG SEGMENT STACK ‘STACK’ Z DW 2CAH Z_SEG ENDS Code SEGMENT
ASSUME CS:Code,DS:X_SEG,ES:Y_SEG,SS:Z_SEG Start: MOV AX, X_SEG MOV DS, AX
MOV AX, Y_SEG MOV ES, AX MOV AX,ES:Y ADD X, AX MOV BP, 0 MOV AX, [BP+Z] ADD X, AX MOV AH, 4CH INT 21H
Code ENDS END Start
12.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的DADD1和附加段E_SEG中的DADD2相加,并把结果存放在D_SEG段中的SUM中。其中DADD1、DADD2和SUM均为双字类型,DADD1赋值为98765,DADD2赋值为-15893。 答:所求程序为:
D_SEG SEGMENT DADD1 DD 98765 SUM DD ? D_SEG ENDS E_SEG SEGMENT DADD2 DD -15893 E_SEG ENDS C_SEG SEGMENT
ASSUME CS: C_SEG,DS:D_SEG,ES:E_SEG Start: MOV AX, D_SEG MOV DS, AX MOV AX, E_SEG MOV ES, AX
MOV AX,WORD PTR DADD1 MOV BX,WORD PTR DADD1+2 ADD AX, WORD PTR ES:DADD2 ADC BX, WORD PTR ES:DADD2+2 MOV WORD PTR SUM, AX MOV WORD PTR SUM+2, BX MOV AH, 4CH INT 21H
C_SEG ENDS END Start
======================================================= 一、填空题
1、执行部件EU的组织有:4个通用寄存器,4个专用寄存器和1个标志寄存器和算术逻辑部件 。
2、8086CPU从偶地址访问内存1个字时需占用 1个总线周期,而从奇地址访问内存1个字操作需占用 2个总线 周期。
3、IBM-PC机中的内存是按段存放信息的,一个段最大存贮空间为 64K 字节。 4、8086微处理机在最小模式下,用 M/IO 来控制输出地址是访问内存还是访问I/O。 5、一台计算机能执行多少种指令,是在 设计 时确定的。 三、简答题
1. 微处理器内部结构由哪些部件组成?
答案:微处理器由两部分组成,总线接口单元和执行单元 2. 论述8086 CPU的最小方式和最大方式的区别。
8086CPU的最小方式和最大方式的区别是:最小方式,MN/MX接+5V(MX为低电平),用于构成小型单处理机系统,支持系统工作的器件:(1)时钟发生器,8284A,(2)总线锁存器,74LS373,(3)总线收发器,74LS245,控制信号由CPU提供。最大方式,MN/MX接地(MX为低电平),用于构成多处理机和协处理机系统,支持系统工作的器件:(1)时钟发生器,8284A,(2)总线锁存器,74LS373,(3)总线收发器,74LS245,(4)总线控制芯片,8288,控制信号由8288提供。 3. 论述指令周期、机器周期和时钟周期间的关系。
执行一条指令所需要的时间称为指令周期;(2).一个CPU同外部设备和内存储器
之间进行信息交换过程所需要的时间称为总线周期;(3).时钟脉冲的重复周期称为时钟周期;(4).一个指令周期由若干个总线周期组成,一个总线周期又由若干个时钟周期组成;(5). 8086CPU的总线周期至少由4个时钟周期组成;(6).总线周期完成一次数据传输包括:传送地址,传送数据;(7)等待周期----在等待周期期间,总线上的状态一直保持不变;(8)空闲周期----总线上无数据传输操作 4. 试比较8086CPU与8086CPU的异同之处。
8088CPU和8086CPU内部寄存器都是16位,数据总线都有是16位,地址总线都有是20位,指令系统相同。主要不同点有:
(1) 8086指令队列是6个字节长,而8088指令队列是4个字节长。 (2) 外部数据总线位数不同,8086为16位AD0~AD15,8088为AD0~AD7
(3) 34脚和28脚功能不同,34脚8086中是数据总线允许BHE/S7,8088是SSO,
28脚,8086是M/IO,8088是IO/M
5. 8086CPU从功能上分为几部分?各部分由什么组成?各部分的功能是什么?
8086从功能上可分为执行单元和总线接口单元。执行单元的功能是负责指令的执
行,将指令译码并利用内部寄存器和ALU对数据进行处理。它由4个通用寄存器(AX、BX、CX、DX),4个专用寄存器(BP、SP、SI和DI),标志寄存器和算术逻辑部件组成。总线接口单元的功能是存储器、I/O端口传送数据。它由4 个段寄存器(CS、DS、ES、SS),
指令指针寄存器IP,20位地址加法器和6个字节的指令队列组成。
6.8086系统中的物理地址是如何得到的?假如CS=2500H,IP=2l00H,其物理地址是多少?
在8086系统中,用16位的段地址和16位的偏移地址来表示20位的物理地址,物
理地址=段地址*16+偏移址得到物理地址。
该题CS=2500H,IP=2l00H,则物理地址=CS*16+IP=2500H*16+2100H=27100H
6. 什么是最大模式?什么是最小模式?用什么方法将8086/8088置为最大模式和最小
模式?
最大模式是相对最小模式而言,系统中包含两个或多个处理品,其中一个主处理器
就是8088/8086,其它处理器是协处理器,它是协助主处理器工作的。将MN/MX*置0即为最大模式。
最小模式又是相对于最大模式,就是在系统中只有一个处理器,所有的总线控制信号都有由8088/8086产生,系统中总线控制逻辑电路少,将MN/MX*置1即为最大模式。
7. 存储器分段组织有何优越性?
减少了指令的长度,提高了执行速度。内存分段为程序浮动加载创造了条件。使程序保持完整的相对性,具备了浮动性。
8. 试述BHE与A0组合如何选择数据字?
BHE的作用是高8位数据允许,A0=0是低8位数据允许,在T1状态时,BHE和A0
组合起来表示连接在数据总线上的存储器和I/O端口当前的数据在总线上出现有格式。
9. CPU响应中断时,为什么要执行两个连续的中断响应周期?
CPU响应中断时,执行两个连续的中断响应周期,每个响应周期都给出中断响应信号
INTA。这是因为第一个总线周期通知中断请示设备,微处理器准备响应中断,应该准备
好中断类型码,第二个总线周期中,微处理器接收中断类型码,以便得到中断向量,即中断服务程序的入口地址。
六、请阅读下列程序,分析其功能或结果 1、 MOV AH,00 INT 16H
MOV AH,0AH MOV CX,00 MOV BH,00 INT 10H
读取键盘输入,并显示在显示器上 2、 MOV AH,00 MOV AL,66 MOV DX,00 INT 17H
MOV AH,00 MOV AL,0DH INT 17H
在打印机一输出字符‘B’,并回车。
3、 MOV AH,07 MOV AL,00 MOV BL,70H MOV CH,02 MOV CL,05 MOV DH,22 MOV DL,38 INT 10H 屏幕初始化,左上角行号为2,左上角列号为5,右下角行号为22,右下角列号为38,使用整个空白窗口。
4、MESS DB ‘PRESS ANY KEY’,0DH,0AH,‘$’ MOV AH,09 MOV DX,SEG MESS MOV DS,DX MOV DX,OFFSET MESS INT 21H
在屏幕上输出PRESS ANY KEY并换行回车 5、MOV AH,2 MOV DL,1 INT 21H
在屏幕上输出1
七、编写程序
1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
abc: mov ah,1 int 21h cmp al,’a’ jb stop cmp al,’z’ ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abc stop: ret
4. 已知整数变量A和B,试编写完成下述操作的程序:
(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中; (2)若两个数均为奇数,则两数分别加1,并存回原变量; (3)若两个数均为偶数,则两变量不变。 dseg segment a dw ? b dw ? dseg ends cseg segment
mainproc far
assume cs:cseg,ds:dseg start:push ds sub ax,ax push ax mov ax,dseg mov ds,ax begin: mov ax,a mov bx,b xor ax,bx test ax,0001 jz class test bx,0001 jz exit xchg bx,a mov b,bx jmp exit class: test bx,0001 jz exit inc b inc a exit: ret mainendp cseg ends end start
5. 把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1) 5、答案: dseg segment grade dw 30 dup(?) rank dw 30 dup(?) dseg ends cseg segment mainproc far
assume cs:cseg, ds:dseg, es:dseg start:push ds sub ax,ax push ax mov ax,dseg mov ds,ax mov es,ax begin: mov di,0
mov cx,30 loop1: push cx mov cx,30 mov si,0 mov ax,grade[di] mov dx,0 loop2: cmp grade[si],ax jbe go_on inc dx go_on: add si,2 loop loop2 pop cx inc dx mov rank[di],dx sdd di,2 loop loop1 ret mainendp cseg ends
6. 试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束。两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。 6、答案: mov si, 0 mov di, 0
test12: in al, 0024h test al, 08 jnz exit in al,0036h test al, 08 jnz exit dev1: in al, 0024h test al, 01 jz dev2 in al, 0026h mov buffer[si], al inc si dev2: in al, 0036h test al, 01 jz test12 in al, 0038h mov buff2[di],al inc di
jmp test12 exit: ret
7.编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为; 输入数字: 0,1,2,3,4,5,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4 7、答案:
scode db 7,5,9,1,3,6,8,0,2,4 buffer db 10 dup(?) ; … … mov mov lea input: mov int cmp jz and xlat mov inc loop exit: ret
si,0 cx,10 bx,scode ah,01 21h al,0ah exit al,0fh buffer[si],al si input
正在阅读:
微机原理与接口技术第三版吴宁,冯博琴试题库(含答案)09-18
2019-2020年四年级数学下册 认识容量和升教案 苏教版01-07
老照片的故事作文400字07-01
论新闻英语标题的语言特色及汉译技巧07-09
曙光中学七年级期中考试地理科目试卷08-17
社区护理11-05
2012—2013学年度“先进班集体”、“三好学生”“优秀学生干部”和优秀学生奖学金获得者名单10-04
2009届佛山市普通高中高三教学质量检测(二)数学文12-18
3当代世界经济与政治作业07-21
- 元旦晚会节目单
- 学案
- 光电显示技术期末复习资料 - 图文
- p2p与供应链结合案例
- 2016--2017学年度第二学期五年级班主任工作计划
- 尔雅2017年西藏的历史和文化期末考试满分答案解析
- 智慧树创新工程实践期末考试答案
- 六年级下美术教案-有趣的纸浮雕广西版
- 设备操作规程汇编
- 通信综合实训系统实验报告
- 南京财经大学金融学期末考试简答题
- 现代服务业发展规划研究 - 图文
- 锚杆支护工知识竞赛题
- 实验五
- 债权法习题集及详细解答
- 上海寺庙大全 - 图文
- 机会成本在企业决策中的应用研究
- 高考总复习语文选择题百题精炼第一季专题01 识记现代汉语字音(教师版)
- A9785-B中文资料
- 56m连续梁主墩冷却管布置技术交底
- 试题库
- 微机
- 接口
- 原理
- 答案
- 技术
- 吴宁,
- 冯博琴
- 2018高中化学第二章化学物质及其变化第三节氧化还原反应(第2课时)氧化剂和还原剂作业1
- 中华姓氏论坛:姓氏,土家姓氏,张家界土家姓氏原考(6)
- 2015年机械制图试题及答案
- 山东省菏泽市2015年中考考试语文试题(扫描版,word版,含参考答案)
- 《健康评估》复习题
- 094章 急性肺损伤和急性呼吸窘迫综合征
- 中外饭店管理比较
- 《资本论》选读试题(卷)合集(附答案解析)练习题集
- 湖南大学土木工程复试和录取名单,精品!
- 全新版大学英语综合教程4版1至8单元的翻译
- MFT以后
- 注册会计师考试7 投资性房地产笔记 - 图文
- 18年高考地理二轮复习专题十区域地理特征分析专题强化训练A卷
- 人教版必修4《矛盾是事物发展的源泉与动力》word导学案 - 图文
- 高考高分作文体式及例文解析
- 清科观察-解密VCPE机构绩效薪酬与项目奖金的设立机制
- 医学文献信息检索讨论课(二、三)
- 《波斯市场》教学反思(哈尔滨市实验学校 宋宁宁) - 图文
- 杨振宁:合璧中西科学文化的骄子(学案有答案)
- 中波发射系统的无线信号源备份系统