微机原理习题解答_第1页
微机原理习题解答_第2页
微机原理习题解答_第3页
微机原理习题解答_第4页
微机原理习题解答_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 习题和解答15.将下列十进制数分别转化为二进制数、十六进制数和BCD码。(1)15.32=(0000 1111.0101 0001)2=(0F.51)16=(0001 0101.0011 0010)BCD(2)325.16=(0001 0100 0101.0010 1000)2=(145.28)16=(0011 0010 0101.0001 0110)BCD(3)68.31=(0100 0100.0100 1111)2=(44.4F)16=(0110 1000.0011 0001)BCD(4)214.126=(1101 0110.0010 0000)2=(0D6.20)16=(0010

2、 0001 0100.0001 0010 0110)BCD16.将下列二进制数分别转化为十进制数和十六进制数。(1)10110101= 181=0B5H(2)11001011= 203=0CBH(3)10101.1001= 21.5625=15.9 H(4) 101101.0101= 45.3125=2D.5H17.将下列十六进制数分别转化为二进制数、十进制数。(1)FAH=1111 1010B=250(2)12B8H=0001 0010 1011 1000B=4792(3)5A8.62H=0101 1010 1000.0110 0010B=1448.3828125(4)2DF.2H=0010

3、 1101 1111.0010B=735.12518.若X-107,Y+74按8位二进制可写出:。X补95H ,Y补=4AH , X +Y补=0DFH,X-Y补=4BH。19.X34AH,Y8CH。问:有三位和两位十六进制数X和Y,(1)若X,Y是纯数(无符号数),则:X+Y3D6H;X-Y2BEH。(2)若X,Y是有符号数,则:X+Y2D6 H;X-Y=3BEH。20.已知X85,Y76(均为十进制数),求-85补,-76补。并利用补码的加、减法运算规则计算X-Y补,-X+Y补,-X-Y补。结果的各机器数及其真值请用十六进制表示,并由运算过程中的标志位OF判断结果是否溢出。 答:X补=85补

4、=55H,Y补=76补=4CH , -X补=-85补=0ABH, -Y补=-76补=0B4HX-Y补=X补+-Y补=55H+B4H=09H, OF=0-X+Y补=-X补+Y补=ABH+4CH=0F7H, OF=0-X-Y补=-X补+-Y补=ABH+B4H=5FH, OF=121.(1) 设X补10101010B,则1/2X补=1/2X补=11010101B(2) 设X补11010100B,则-1/4X补=1/4X补补=11110101补=00001011B第2章 习题和解答1. 8086是多少位的微处理器?为什么? 答:8086是高性能的第三代微处理器,是Intel系列的16位微处理器。2.

5、EU与BIU各自的功能是什么?如何协同工作?答:EU其主要功能是执行命令。BIU其主要功能是负责完成CPU与存储器或I/O设备之间的数据传送。总线接口部件BIU和执行部件EU并不是同步工作的, 两者的动作管理遵循如下原则:每当8086的指令队列中有2个空字节,BIU就会自动把指令取到指令队列中。 而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。 当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。3. 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?答:8086CPU内有14个16位的寄存器。其中有4个16位通用寄存器AX、BX、CX

6、、DX,2个16位指针寄存器SP、BP,2个16位变址寄存器SI、DI,4个16位段寄存器CS、DS、SS、ES,1个16位指令指针寄存器IP及1个16位标志寄存器FLAGS。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。4. 8086对存储器的管理为什么采用分段的办法?答:8086 CPU有20位地址总线,它可寻址的存储空间为1MB。而8086指令给出的地址编码只有16位,指令指针和变址寄存器也都是16位的,所以CPU不能直接寻址1 MB空间,为此采用分段管理。5. 在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。答:逻辑地址=物理地址:偏移地址;偏

7、移地址=相对于段起始地址的距离; 物理地址=段地址*10H+偏移地址6. 给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。答: 物理地址=段地址*10H+偏移地址=0C00E0H+20C0H=0C21A0H7. 8086/8088为什么采用地址/数据引线复用技术?答:8086/8088 CPU具有40条引脚,采用分时复用地址数据总线,从而使8086/8088 CPU用40条引脚实现20位地址、16位数据、控制信号及状态信号的传输。8. 8086与8088的主要区别是什么?答:8086有16位数据线,8088有8位数据线。9. 怎样确定8086

8、的最大或最小工作模式?答:8088/8086CPU的引脚固定接+5V时,CPU处于最小模式下, 引脚固定接地时,CPU处于最大模式下。10. 8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?答:复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。11. 8086基本总线周期是如何组成的?各状态中完成什么基本操作?答:一个基本的总线周期由4个T状态组成,我们分别称为T1-T44个状态,在每个T状态下,CPU完成不同的动作。T1状态:根据IO/M确定对存贮器或I/O操作,20位地址A0

9、A19信号有效,地址锁存信号ALE有效,给出DT/R信号控制8286数据传输方向。T2状态:高四位地址/状态线送出状态信息S3S6,低16位地址/数据线浮空,为下面传送数据准备;WR或RD有效,表示要对存贮器/I/O端口进行读或写;有效,使得总线收发器(驱动器)可以传输数据。T3状态:从存贮器或者I/O端口读出的数据送上数据总线(通过)。Tw状态:若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY线通知CPU,CPU在的前沿(即结束末的下降沿)检测READY,若发现READY0,则在结束后自动插入1个或几个,并在每个的前沿处检测READY,等到READY变高后,则自动脱离进入。T4

10、状态:在与(或)的交界处(下降沿),采集数据,使各控制及状态线进入无效。13. 8086中断分哪两类?8086可处理多少种中断?答:中断共分为两类:硬件中断和软件中断,8086可处理256种中断。14. 8086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?答:硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。不可屏蔽中断:由NMI引脚引入,它不受中断允许标志IF的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。这种中断一旦发生,系统会立即响应;可屏蔽中断:由INTR引脚引入,它受中断允许标志IF的影响,也就是说,只有当IF1时,可屏蔽中断才能进入,反之则不允许进入。15

11、. 中断向量表的功能是什么?已知中断类型码分别是84H和0FAH,它们的中断向量应放在中断向量表的什么位置?答:中断向量表存放的是各中断程序的入口地址即16位偏移地址和16位段地址,只要给出中断类型码,可以算出中断程序在中断向量表的什么位置:中断向量表地址=中断类型码*4 中断向量表地址1=84H*4=210H中断向量表地址2=0FAH*4=3E8H第3章 习题和解答1. 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?答:指令由操作码和操作数两部分组成,操作码表示计算机执行某种指令功能,操作数表示操作中所需要的

12、数据或者数据所在存储单元的地址。寻址方式是寻找操作数或操作数地址的方式。8086提供了七种寻址方式:立即寻址、 寄存器寻址、直接寻址、寄存器间接寻址、 相对寄存器寻址、基址变址寻址和相对基址变址寻址方式。2. 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H 立即寻址 物理地址无(2) MOV AX,BX 寄存器寻址 物理地址无(3) MOV AX,1000H 直接寻址

13、物理地址=2000H*10H+1000H=21000H(4) MOV AX,VAL 直接寻址 物理地址=2000H*10H+0050H=20050H(5) MOV AX,BX 寄存器间接寻址 物理地址=2000H*10H+0100H=20100H(6) MOV AX,ES:BX 寄存器间接寻址 物理地址=2100H*10H+0100H=21100H(7) MOV AX,BP 寄存器间接寻址 物理地址=1500H*10H+0010H=15010H(8) MOV AX,SI 寄存器间接寻址 物理地址=2000H*10H+00A0H=200A0H(9) MOV AX,BX+10H 相对寄存器寻址 物

14、理地址=2000H*10H+0100H+10H=20110H(10) MOV AX,VALBX 相对寄存器寻址 物理地址=2000H*10H+0100H+50H=20150H(11) MOV AX,BXSI 基址变址寻址 物理地址=2000H*10H+0100H+A0H=201A0H(12) MOV AX,VALBXSI 相对基址变址寻址 物理地址=2000H*10H+0100H+A0H+50H=201F0H3. 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) =32H,(20101)=51H,(20102) =26H

15、,(20103)= 83H,(21200)=1AH,(21201)=B6H,(21202)=D1H,(21203)=29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。32H51H26H83H1AHB6HD1H29H20100H20101H20102H20103H21200H21201H21202H21203H(1) MOV AX,1200H 立即寻址 AX=1200H(2) MOV AX,BX 寄存器寻址 AX=0100H(3) MOV AX,1200H 直接寻址 物理地址=2000H*10H+1200H=21200H AX=0B61AH(4) MOV AX,BX 寄存器间接寻

16、址 物理地址=2000H*10H+0100H=20100H AX=5132H(5) MOV AX,1100HBX 相对寄存器寻址 物理地址=2000H*10H+0100H+1100H=21200H AX=0B61AH(6) MOV AX,BXSI 基址变址寻址 物理地址=2000H*10H+0100H+02H=20102H AX=8326H4. 试说明指令MOV BX,10HBX与指令LEA BX,10HBX的区别 答:MOV BX,10HBX BX=物理地址为(DS*10H+BX+10H)2字节单元的内容LEA BX,10HBX BX= BX+10H(地址)5. 假设(DS)=3000H,(

17、CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H (31000H)=1250H,(31050H)=2400H,(31052H)=6000H。确定下列转移指令的转移地址(1) JMP 2500H IP =2500H CS=1000H CS段指令物理地址=1000H*10H+2500H=12500H(2) JMP BX IP=BX=1000H CS=1000H CS段指令物理地址=1000H*10H+1000H=11000H (3) JMP WORD PTRBX DS段物理地址=3000H*10H+1000H=31000H IP=(31000H)=1250H

18、 CS=1000H: CS段指令物理地址=1000H*10H+1250H= 11250H (4) JMP DWORD PTRBX+DATA DS段物理地址=3000H*10H+1000H+50H=31050H IP=(31050H)=2400H CS=(31052H)=6000H CS段指令物理地址=6000H*10H+2400H=62400H6. 设堆栈指针SP的初值为2500H, (AX)=1234H,(BX)=5678H。执行指令PUSH AX后,(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=? PUSH AX SP=SP-2=2500H

19、-2=24FEHPUSH BX SP=SP-2=24FEH-2=24FCHPOP AX SP=SP+2=24FCH+2=24FEH AX=5678H BX=5678H7. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。(1) MOV AH,BX 错 数据结构不同 MOV AX,BX或 MOV AH,BL(2) MOV BX,SI 错 二存储单元间不允许直接传送数据 MOV AX,SI MOV BX,AX(3) MOV AX,SIDI 错 源区都为变址寄存器 MOV AX,BXDI 或MOV AX,BXSI(4) MOV MYDATBXSI,ES:AX 错 段前缀应指向存储单元MOV

20、ES:MYDATBXSI,AX(5) MOV BYTE PTRBX,1000 错 数据结构不同 MOV BYTE PTRBX,100 (6) MOV BX,OFFSET MAYDATSI 错 MAYDAT为符号地址 MOV BX,OFFSET MAYDAT(7) MOV CS,AX 错 不允许给CS赋值 MOV DS,AX(8) MOV DS,BP 错 赋值方式不对 MOV AX,BP MOV DS,AX8. 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。(1) ADD VAR1,VAR2 错 VAR1、VAR2为字变量(代表2个存储单元地址) MOV AX,

21、VAR2 ADD VAR1,AX(2) MOV AL,VAR2 错 数据结构不同 MOV AX,VAR2(3) SUB AL,VAR1 错 数据结构不同 SUB AX,VAR1(4) JMP LABSI 错 LAB为标号地址 JMP LAB(5) JNZ VAR1 错 VAR1为字变量不是标号地址 JNZ LAB 9. 已知 (AL)=6CH, (BL)=0A9H,执行指令ADD AL,BL后,AF、CF、OF、PF、SF、和ZF的值各为多少?ADD AL,BL AL=6CH+ A9H=15H AF=1 CF=1 OF=0 PF=0 SF=0 ZF=010. 试判断下列程序执行后,(BX)=的

22、内容。 MOV CL,5 MOV BX,01C9H BX=01C9HROL BX,1 BX=0392HRCR BX,CL BX=201CH 11. 写出能够完成下列操作的8086CPU指令。(1) 把4629H传送给AX寄存器; MOV AX, 4629H(2) 从AX寄存器中减去3218H; SUB AX, 3218H(3) 把BUF的偏移地址送入BX中。 LEA BX, BUF12. 根据以下要求写出相应的汇编语言指令。 (1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中; ADD DX, BX(2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL

23、寄存器中; ADD AL, BXSI(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中; ADD WORD PTR BX+21B5H, CX(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中; ADD WORD PTR 2158H, 3160H(5) 把数25H与(AL)相加,结果送回寄存器AL中。 ADD AL, 25H13. 按下列要求写出相应的指令或程序段。(1) 使BL寄存器中的高、低四位互换; MOV CL, 4 ROL BL, CL(2)屏蔽AX寄存器中的b10和b5位;

24、AND AX, 1111 1011 1101 1111B (3)分别测试AX寄存器中b13和b2位是否为1。 TEST AX, 0000 0000 0000 0100B 测试AX寄存器中b2位是否为1TEST AX, 0010 0000 0000 0000B 测试AX寄存器中b13位是否为114. 执行以下两条指令后,标志寄存器FLAGS的六个状态为各为何值? MOV AX,95C8HADD AX,8379H AX=1941H AF=1 CF=1 OF=1 PF=1 SF=0 ZF=0 15. 若(AL)=85H,(BL)=11H,在分别执行指令MUL和IMUL后,其结果是多少?MUL BL

25、AL*BL=85H*11H=133*17=2261àAX=08D5H(无符号数相乘)IMUL BL AL*BL=-7BH*11H=(-123)*17= -2091àAX=0F7D5H(有符号数相乘)第4章 习题和解答1. 请分别用DB、DW、DD伪指令写出在DATA开始的连续8个单元中依次存放数据11H、22H、33H、44H、55H、66H、77H、88H的数据定义语句。DATA DB 11H,22H,33H,44H,55H,66H,77H,88H10H20H30H?31H32H33H0000H0001H0002H0003H0004H0015H0016H0017H0018

26、H0019HDATA1STRINGDATA2DATA DW 1122H,3344H, 5566H,7788HDATA DD 11223344H, 55667788H2. 若程序的数据段定义如下,写出各指令语句独立执行后的结果: DSEGSEGMENTDATA1DB10H,20H,30H ;3个字节(数据为10H,20H,30H),地址0000H-0002HDATA2DW10DUP(?) ;20个字节(数据全为未知数),地址0003H-0016HSTRINGDB123 ;3个字节(数据为31H,32H,33H),地址0017H-0019HDSEGENDS (1) MOV AL,DATA1 AL=

27、10H(2) MOV BX,OFFSET DATA2 BX=0003H(3) LEA SI,STRING SI=0017H ADD BX,SI BX=001AH MOV AL,SI+2 AL=33H 3. 试编写求两个无符号双字长数之和的程序。两数分别在MEM1和MEM2单元中,和放在SUM单元。78H96H34H82H32HA4H76H98H0000H0001H0002H0003H0004H0005H0006H0007HMEM1MEM2 DATAS SEGMENT MEM1 DD 82349678H MEM2 DD 9876A432H SUM DD ? DATAS ENDS CODES SE

28、GMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DATAS MOV DS, AX ;取定义的DS段的段地址àDSLEA BX,MEM1 ;取MEM1偏移地址BX=0000H LEA SI, MEM2 ;取MEM2偏移地址SI=0004H LEA DI, SUM ;取SUM偏移地址DI=0008H MOV AX, WORD PTR BX ;将0000H地址的内容9678HàAX=9678H ADD AX, WORD PTR SI ;AX+0004H地址的内容A432HàAX=3AAAH, 有进位CF=1 MOV WORD

29、 PTR DI, AX ;将AX的内容à偏移地址DI=0008H字单元中 INC BX ;BX=BX+1=0001H INC BX ;BX=BX+1=0002H INC SI ;SI=SI+1=0005H INC SI ;SI=SI+1=0006H INC DI ;DI=DI+1=0009H INC DI ;DI=DI+1=000AH MOV AX,WORD PTR BX ;将0002H地址的内容8234HàAX=8234H ADC AX,WORD PTR SI ;AX+0006H地址的内容9876H+CFàAX=1AABH, 有进位CF=1 MOV WORD P

30、TR DI,AX ;将AX的内容à偏移地址DI=000AH字单元中 MOV AH, 4CH INT 21H CODES ENDS END START 4. 试编写程序,测试AL寄存器的第4位是否为0? TEST AL, 00001000B JZ LP 5. 编写程序,将BUFFER中的一个8位二进制数转换为ASCII码,并按位数高低顺序存放在ANSWER开始的内存单元中。DATA SEGMENTBUFFER DB 3CHANSWER DB ?, ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA M

31、OV DS, AXMOV AL, BUFFER ;AL=3CHMOV CL, 4SHR AL, CL ;将AL内容右移4位AL=03H,先取高四位3 CMP AL,9 ;JG LP1 ;若AL内容大于9,说明AL内容在A-F之间ADD AL,30H ;否则AL内容小于9,将AL内容转换为ASCII码即AL+30H->ALJMP LP2LP1:ADD AL,37H ;将AL内容转换为ASCII码即AL+37H->AL(如0CH+37H=43H大写C的ASCII码)LP2:MOV ANSWER, AL ;将结果存入ANSWER第一个单元MOV AL, BUFFER ;AL=3CHAND

32、 AL, 0FH ; 取AL内容低四位C 48H45H4CH4CH4FH21H20H47H4FH4FH44H20H4DH4FH52H4EH49H4EH47H21H?0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH000EH000FH0010H0011H0012H0013H0014H0026HDATA1HELLO!GOODMORNING!DATA2CMP AL,9 ;JG LP3 ;若AL内容大于9,说明AL内容在A-F之间ADD AL,30H ;否则AL内容小于9JMP LP4 ;将AL内容转换为ASC

33、II码即AL+30H->ALLP3: ADD AL,37H ;将AL内容转换为ASCII码LP4: MOV ANSWER+1, AL ;将结果存入ANSWER第二个单元 MOV AH, 4CH INT 21H CODE ENDS END START 6. 假设数据项定义如下:DATA1DBHELLO! GOOD MORNING!DATA2DB20DUP(?) 用串操作指令编写程序段,使其分别完成以下功能:i.从左到右将DATA1中的字符串传送到DATA2中;LEA SI, DATA1 ;SI=0000HLEA DI, DATA2 ;DI=0014HMOV CX, 20 ;20个字符REP

34、 MOVSB ; 将DATA1中的字符串传送到DATA2中 ii.传送完后,比较DATA1和DATA2中的内容是否相同; LEA SI, DATA1LEA DI, DATA2MOV CX, 20 ;20个字符 REPE CMPSB ;CX不为零时,字符相同继续比较,不同指令停止 JNZ STOP ;若不同-> STOP0AH00H14H00H1EH00H28H00H32H00H03H00H0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BHTABLEENTRY ;否则都相同iii.把DATA1中的第3和第4个字节装入AX

35、; MOV AX, WORD PTR DATA1+2iv.将AX的内容存入DATA2+5开始的字节单元中。 MOV WORD PTR DATA2+5, AX7. 执行下列指令后,AX寄存器中的内容是多少? TABLEDW 10,20,30,40,50 ENTRYDW 3 MOVBX,OFFSETTABLE ;BX=0000H(地址) ADDBX,ENTRY ;BX=0003HMOVAX,BX ;AX=1E00H8. 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。DATA SEGMENTSTRING1 DB “0123456789ABCDEFGHIJKLMNOP

36、QRSTUVWXYZ” ;36个字符ASCII码STRING2 DB 20 DUP(?)L EQU STRING2- STRING1 ; STRING1的长度=36DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AXLEA SI, STRING1 ;取STRING1串的首地址=0000HLEA DI, STRING2 ;取STRING2串的首地址=0024H=36MOV CX, 20MOV AX, L ;AX=36=0024HSUB AX, CX ;AX=3

37、6-20=0024H-0014H=0010HADD SI, AX ;SI=SI+AX=0000H+0010H=0010HREP MOVSBMOV AH, 4CHINT 21H CODE ENDS END START 9. 假设一个48位数存放在DX:AX:BX中,试编写程序段,将该48位数乘2。 CODE SEGMENT ASSUME CS:CODE START: MOV BX, 9ABCH ;设DX AX BX=1234 5678 9ABCH MOV AX, 5678H ;DX AX BX*2=将DX AX BX左移一次 MOV DX, 1234H SHL BX, 1 ;BX=BX*2=35

38、78H, CF=1 RCL AX, 1 ;AX=AX*2+CF=ACF1H, CF=0 RCL DX, 1 ;DX=DX*2+CF=2468H, CF=0 MOV AH, 4CHINT 21H CODE ENDS END START10. 试编写程序,比较AX,BX,CX中带符号数的大小,并将最大的数放在AX中。 CODE SEGMENT ASSUME CS:CODESTART: MOV AX, -5 MOV BX, 6 MOV CX, 10CMP AX, BX JGE LL1 XCHG AX, BXLL1: CMP AX, CX JGE LL2 XCHG AX, CXLL2: MOV AH,

39、 4CHINT 21H CODE ENDS END START11. 若接口03F8H的状态的数据(b1)和(b3)同时为1,表示接口03F8H有准备好的8位数据,当CPU将数据取走后,b1和b3就不再同时为1了。仅当又有数据准备好时才再同时为1。试编写程序,从上述接口读入20个数据,并顺序放在DATA开始的地址中。DATAS SEGMENT DATA DB 20 DUP(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DATA MOV DS, AXMOV CX, 20 LEA BX, DATAMOV DX,

40、 03F8H LOP: IN AL, DX ;读接口状态 NOT AL ;将AL内容取反,若b1=1和b3=1取反后全为0 TEST AL, 00001010b ;判断接口03F8H的状态的数据(b1)和(b3)是否同时为1 JNZ LOP ;若相与的结果不为零表示接口没有准备好,继续读状态 IN AL, DX ;若相与的结果为零表示接口准备好;读接口数据 MOV BX, AL ;存数据 INC BXDEC CX JNZ LOP ;从接口读入20个数据 MOV AH, 4CH INT 21HCODES ENDS END START12. 画图说明下列语句分配的存储空间及初始化的数据值(1) D

41、ATA1DBBYTE,12,12H,2 DUP(0,?,3)(2) DATA2DW2 DUP(0,1,2),?,-5,256H13. 请用子程序结构编写如下程序:从键盘输入一个二位十进制的月份数(0112),然后显示出响应的英文缩写名。0000H0001H0002H0000H0001H0002H?FFFB0256HDATA20000H0002H0004H0006H0008H000AH000CH000DH000EH0010H0012H0014H42H59H55H45H0CH12H00H?03H00H?H03HDATA10000H0001H0002H0003H0004H0005H0006H0007

42、H0008H0009H000AH000BH14. 给出下列等值语句:LPHAEQU100BETAEQU25GRAMM EQU 4试求出下列表达式的值:(1) ALPHA*100+BETA; MOV AL, LPHA MOV BL, 100 MOV CX, BETA MUL BL ;AL*BL->AX ADD AX, CX(2) (ALPHA + 4)*BETA-2 MOV AL, LPHA ADD AL, 4 MOV BL, BETA MUL BL ;AL*BL->AX10H34H07H09H42H00H42H00H48H45H4CH4CH4FHCDHABH00H00HDATA10

43、000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH000EH000FH0010HDATA2DATA3DATA5 SUB AX, 2(3) (BETA/3)MOD 5; MOV AX, BETA MOV BL, 3 DIV BL MOV AL, AL MOD 5(4) GRAMMOR3 MOV AL, GRAMM OR AL, 315.图示以下数据段在存储器中的存放形式。 DATASEGMENTDATA1 DB10H,34H,07H,09HDATA2 DW2DUP(42H)DATA3 DB HELLODATA

44、4EQU 12DATA5DD0ABCDHDATA ENDS 16. 阅读下边的程序段,试说明它实现的功能是什么? DATAS SEGMENTDATA1DBABCDEFGDATAS ENDSCODES SEGMENT ASSUMECS:CODES, DS:DATASSTART: MOV AX, DATAS MOV DS, AX MOV BX, OFFSETDATA1 ;BX取DATA1地址, BX=0000H MOV CX, 7NEXT: MOV AH, 2 ;DOS功能2 MOV AL, BX XCHG AL, DL ;将要显示字符的ASCII送DL INC BX INT 21H LOOP NEXT ; 功能是显示字符ABCDEFG MOV AH, 4CH INT 21HCODESENDS END START 17. 编写一程序段,把BUFFER开始的100个字节的内存区域初始化为55H、0AAH、55H、0AAH、55H、0AAH。 DATAS SEGMENT BUFFER DB 100 DUP(?) DATAS ENDS C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论