《2022年微机原理习题解答 2.pdf》由会员分享,可在线阅读,更多相关《2022年微机原理习题解答 2.pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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=(
2、0010 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.5H 17. 将下列十六进制数分别转化为二进制数、十进制数。(1)FAH=1111 1010B=250 (2)12B8H=0001 0010 1011 1000B=4792 (3)5A8.62H=0101 1010 1000.0110 0010B=1448.3828125 (
3、4)2DF.2H=0010 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+Y 3D6H;X-Y 2BEH。(2)若 X, Y 是有符号数,则:X+Y 2D6 H; X-Y=3BEH 。20. 已知 X 85,Y76(均为十进制数),求-85补,-76 补。并利用补码的加、减法运算规则计算X-Y 补,-X+Y 补, -X-Y 补。
4、结果的各机器数及其真值请用十六进制表示,并由运算过程中的标志位OF 判断结果是否溢出。答: X 补=85 补=55H,Y 补 =76 补=4CH , -X 补=-85 补=0ABH, -Y 补=-76 补=0B4H X-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=1 21. (1) 设X 补 10101010B,则1/2X 补=1/2X 补=11010101B(2) 设X 补 11010100B,则-1/4X 补=1/4X 补 补=11110
5、101 补=00001011B 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 第 2 章习题和解答1. 8086 是多少位的微处理器?为什么?答: 8086 是高性能的第三代微处理器,是Intel 系列的 16 位微处理器。2. EU 与 BIU 各自的功能是什么?如何协同工作?答: EU其主要功能是执行命令。BIU 其主要功能是负责完成CPU与存储器或I/O 设备之间的数据传送。总线接口部件BIU 和执行部件EU并不是同步
6、工作的,两者的动作管理遵循如下原则:每当 8086 的指令队列中有2 个空字节, BIU 就会自动把指令取到指令队列中。而同时 EU从指令队列取出一条指令, 并用几个时钟周期去分析、执行指令。当指令队列已满,而且 EU对 BIU 又无总线访问请求时,BIU 便进入空闲状态。3. 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?答: 8086CPU 内有 14 个 16 位的寄存器。其中有4 个 16 位通用寄存器AX、BX 、CX、DX ,2 个 16 位指针寄存器SP、BP,2 个 16 位变址寄存器SI、DI ,4 个 16 位段寄存器CS、DS、SS、 ES,1 个 1
7、6 位指令指针寄存器IP 及 1 个 16 位标志寄存器FLAGS 。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。4. 8086 对存储器的管理为什么采用分段的办法?答:8086 CPU 有 20 位地址总线, 它可寻址的存储空间为1MB 。而 8086 指令给出的地址编码只有16 位,指令指针和变址寄存器也都是16 位的,所以CPU 不能直接寻址1 MB 空间 , 为此采用分段管理。5. 在 8086 中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。答:逻辑地址=物理地址:偏移地址;偏移地址 =相对于段起始地址的距离;物理地址 =段地址 *10H+ 偏移地址
8、6. 给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH ,求出该内存单元的物理地址。答:物理地址 =段地址 *10H+ 偏移地址 =0C00E0H+20C0H=0C21A0H 7. 8086/8088 为什么采用地址/数据引线复用技术?答: 8086/8088 CPU 具有 40 条引脚,采用分时复用地址数据总线,从而使8086/8088 CPU 用 40 条引脚实现 20 位地址、 16 位数据、控制信号及状态信号的传输。8. 8086 与 8088 的主要区别是什么?答: 8086 有 16 位数据线, 8088 有 8 位数据线。9. 怎样确定8086 的最大或最
9、小工作模式?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 答:8088/8086CPU 的引脚固定接 +5V 时,CPU 处于最小模式下,引脚固定接地时,CPU 处于最大模式下。10. 8086 被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?答:复位信号输入之后,CPU 结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES 寄存器及指令队列进行清零操作,而将CS 设置为 0FFFFH。11. 808
10、6 基本总线周期是如何组成的?各状态中完成什么基本操作?答:一个基本的总线周期由4 个 T 状态组成,我们分别称为T1-T44 个状态,在每个T 状态下, CPU 完成不同的动作。T1状态:根据IO/M 确定对存贮器或I/O 操作, 20 位地址 A0A19信号有效,地址锁存信号ALE 有效,给出 DT/R 信号控制8286 数据传输方向。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - T2状态:高四位地址/状态线送出状态信息
11、S3S6, 低 16 位地址 /数据线浮空,为下面传送数据准备;WR 或 RD 有效, 表示要对存贮器/I/O 端口进行读或写;有效,使得总线收发器(驱动器 )可以传输数据。T3状态:从 存贮 器或 者I/O端口 读出的 数据送上数据 总线( 通过) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - Tw 状态:若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY 线通知 CPU,CPU 在的前沿 (即结束末的下降沿
12、)检测 READY , 若发现 READY 0, 则在结束 后 自动 插入1个 或 几 个, 并在 每个名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 的前沿处检测READY ,等到 READY 变高后, 则自动脱离进入。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - -
13、 - - T4状态:在与( 或) 的 交界处 (下降沿 ),采集数据,使各控制及状态线进入无效。13. 8086 中断分哪两类?8086 可处理多少种中断?答:中断共分为两类:硬件中断和软件中断,8086 可处理 256 种中断。14. 8086 可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?答:硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。不可屏蔽中断:由NMI引脚引入,它不受中断允许标志IF 的影响, 每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。 这种中断一旦发生,系统会立即响应;可屏蔽中断:由INTR 引脚引入,它受中断允许标志IF 的影响,也就是说,只有当 IF
14、 1 时,可屏蔽中断才能进入,反之则不允许进入。15.中断向量表的功能是什么?已知中断类型码分别是84H 和 0FAH ,它们的中断向量应放在中断向量表的什么位置?答:中断向量表存放的是各中断程序的入口地址即16 位偏移地址和16 位段地址,只要给出中断类型码,可以算出中断程序在中断向量表的什么位置:中断向量表地址=中断类型码 *4 中断向量表地址1=84H*4=210H 中断向量表地址2=0FAH*4=3E8H名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 -
15、 - - - - - - - - 第 3 章习题和解答1. 简要分析8086 的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么? 8086 指令系统有哪些寻址方式?答:指令由操作码和操作数两部分组成,操作码表示计算机执行某种指令功能,操作数表示操作中所需要的数据或者数据所在存储单元的地址。寻址方式是寻找操作数或操作数地址的方式。8086 提供了七种寻址方式:立即寻址、寄存器寻址、 直接寻址、 寄存器间接寻址、相对寄存器寻址、基址变址寻址和相对基址变址寻址方式。2. 设(DS)=2000H ,(ES)= 2100H ,(SS)= 1500H,(SI)= 00A0H
16、 ,(BX)= 0100H ,(BP)= 0010H ,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX ,21H 立即寻址物理地址无(2) MOV AX ,BX 寄存器寻址物理地址无(3) MOV AX ,1000H 直接寻址物理地址 =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寄存器
17、间接寻址物理地址 =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相对寄存器寻址物理地址 =2000H*10H+0100H+10H=20110H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - -
18、 (10) MOV AX ,VALBX 相对寄存器寻址物理地址 =2000H*10H+0100H+50H=20150H (11) MOV AX ,BXSI 基址变址寻址物理地址 =2000H*10H+0100H+A0H=201A0H (12) MOV AX,V ALBXSI相对基址变址寻址物理地址 =2000H*10H+0100H+A0H+50H=201F0H 3. 给定寄存器及存储单元的内容为:(DS) = 2000H, (BX) = 0100H,(SI) = 0002H,(20100) =32H ,(20101)=51H ,(20102) =26H ,(20103)= 83H ,(2120
19、0)=1AH ,(21201)=B6H ,(21202)=D1H ,(21203)=29H 。试说明下列各条指令执行完后,AX 寄存器中保存的内容是什么。(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寄存器间接寻址物理地址 =2000H*10H+0100H=20100H AX=5132H (5) MOV AX ,1100HBX 相对寄存器寻址物理地址 =2000H*10H+0
20、100H+1100H=21200H AX=0B61AH (6) MOV AX ,BXSI基址变址寻址物理地址 =2000H*10H+0100H+02H=20102H AX=8326H 4. 试说明指令MOV BX,10HBX与指令 LEA BX,10HBX的区别答: MOV BX,10HBX BX= 物理地址为 (DS*10H+BX+10H)2字节单元的内容LEA BX,10HBX BX= BX+10H( 地址 ) 5. 假设 (DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大 DATA=50H (31000H)=1250H, (31050H)=2
21、400H,(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 CS=1000H: CS 段指令物理地址=1000H*10H+1250H= 11250H (4) JMP DWORD PTRB
22、X+DATA DS 段物理地址 =3000H*10H+1000H+50H=31050H IP=(31050H)=2400H CS=(31052H)=6000H CS 段指令物理地址=6000H*10H+2400H=62400H 6. 设堆栈指针SP 的初值为 2500H, (AX)=1234H,(BX)=5678H。执行指令PUSH AX 后,(SP)=?,再执行指令PUSH BX 及 POP AX 之后, (SP)=? (AX)=? (BX)=? PUSH AX SP=SP-2=2500H-2=24FEH PUSH BX SP=SP-2=24FEH-2=24FCH POP AX SP=SP+
23、2=24FCH+2=24FEH AX=5678H BX=5678H 7. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。(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 ES:MYDATBXSI,AX (5) MOV BYTE PTRBX,1000
24、 错数据结构不同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 ,AX 8. 设 VAR1、 VAR2 为字变量, LAB 为标号,分析下列指令的错误之处并加以改正。(1) ADD VAR1,VAR2 错VAR1 、VAR2 为字变量 (代表 2 个存储单元地址) 32H 51H 26H 83H 1AH B6H D1H 29H 2
25、0100H 20101H 20102H 20103H 21200H 21201H 21202H 21203H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - MOV AX, V AR2 ADD V AR1,AX (2) MOV AL ,VAR2 错数据结构不同MOV AX ,VAR2 (3) SUB AL ,VAR1 错数据结构不同SUB AX ,VAR1 (4) JMP LABSI 错LAB 为标号地址JMP LAB (5)
26、 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=0 10. 试判断下列程序执行后,(BX)= 的内容。MOV CL,5 MOV BX,01C9H BX=01C9H ROL BX,1 BX=0392H RCR BX,CL BX=201CH 11. 写出能够完成下列操作的8086CPU 指令。(1) 把 4629H 传送给 AX 寄存器;
27、MOV AX, 4629H (2) 从 AX 寄存器中减去3218H;SUB AX, 3218H (3) 把 BUF 的偏移地址送入BX 中。LEA BX, BUF 12. 根据以下要求写出相应的汇编语言指令。(1) 把 BX 和 DX 寄存器的内容相加,结果存入DX 寄存器中;ADD DX, BX (2) 用 BX 和 SI 的基址变址寻址方式,把存储器中的一个字节与AL 内容相加,并保存在AL 寄存器中;ADD AL, BXSI (3) 用寄存器 BX 和位移量21B5H 的变址寻址方式把存储器中的一个字和(CX) 相加,并把结果送回存储器单元中;ADD WORD PTR BX+21B5H
28、, CX (4) 用位移量 2158H 的直接寻址方式把存储器中的一个字与数3160H 相加,并把结果送回该存储器中;ADD WORD PTR 2158H, 3160H (5) 把数 25H 与 (AL) 相加,结果送回寄存器AL 中。ADD AL, 25H 13. 按下列要求写出相应的指令或程序段。(1) 使 BL 寄存器中的高、低四位互换;MOV CL, 4 ROL BL, CL (2) 屏蔽 AX 寄存器中的b10和 b5 位;AND AX, 1111 1011 1101 1111B (3) 分别测试AX 寄存器中b13 和 b2 位是否为 1。TEST AX, 0000 0000 00
29、00 0100B 测试 AX 寄存器中b2 位是否为1 TEST AX, 0010 0000 0000 0000B 测试 AX 寄存器中b13 位是否为1 14. 执行以下两条指令后,标志寄存器FLAGS 的六个状态为各为何值?MOV AX,95C8H ADD 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 AL*BL=85H*11H=133*17=2261AX=08D5H( 无符号数相乘)IMUL BL AL*BL=-7BH*1
30、1H=(-123)*17= -2091AX=0F7D5H( 有符号数相乘)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 第 4 章习题和解答1. 请分别用DB 、DW 、DD 伪指令写出在DATA 开始的连续8 个单元中依次存放数据11H、22H、33H、44H、55H、66H、77H、88H 的数据定义语句。DATA DB 11H,22H,33H,44H,55H,66H,77H,88H DATA DW 1122H,334
31、4H, 5566H,7788H DATA DD 11223344H, 55667788H 2. 若程序的数据段定义如下,写出各指令语句独立执行后的结果:DSEG SEGMENT DATA1 DB 10H, 20H,30H ;3 个字节 (数据为 10H,20H,30H), 地址 0000H-0002H DATA2 DW 10 DUP(?) ;20 个字节 (数据全为未知数),地址 0003H-0016H STRING DB 123;3 个字节 (数据为 31H,32H,33H), 地址 0017H-0019H DSEG ENDS (1) MOV AL ,DATA1 AL=10H (2) MOV
32、 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 单元。DATAS SEGMENT MEM1 DD 82349678H 10H 20H 30H ? ? ? ? 31H 32H 33H 0000H 0001H 0002H 0003H 0004H 0015H 0016H 0017H 0018H 0019H DATA1 STRING DATA2 78H 96H 34
33、H 82H 32H A4H 0000H 0001H 0002H 0003H 0004H 0005H MEM1 MEM2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - MEM2 DD 9876A432H SUM DD ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES, DS:DA TAS START: MOV AX, DA TAS MOV DS, AX ;取定义的DS 段的段地址DS LE
34、A BX,MEM1 ;取 MEM1 偏移地址 BX=0000H LEA SI, MEM2 ;取 MEM2 偏移地址 SI=0004H LEA DI, SUM ;取 SUM 偏移地址 DI=0008H MOV AX, WORD PTR BX ;将0000H 地址的内容9678HAX=9678H ADD AX, WORD PTR SI ;AX+0004H 地址的内容A432HAX=3AAAH, 有进位 CF=1 MOV WORD PTR DI, AX ;将 AX 的内容偏移地址 DI=0008H 字单元中INC BX ;BX=BX+1=0001H INC BX ;BX=BX+1=0002H INC
35、 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 地址的内容8234HAX=8234H ADC AX,WORD PTR SI ;AX+0006H 地址的内容9876H+CFAX=1AABH, 有进位 CF=1 MOV WORD PTR DI,AX ;将 AX 的内容偏移地址 DI=000AH 字单元中MOV AH, 4CH INT 21H CODES ENDS END START 4. 试编写程序,测试AL 寄存器的第4
36、位是否为0?TEST AL, 00001000B JZ LP 5. 编写程序,将BUFFER 中的一个8 位二进制数转换为ASCII 码,并按位数高低顺序存放在ANSWER开始的内存单元中。DATA SEGMENT BUFFER DB 3CH ANSWER DB ?, ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DA TA START: MOV AX, DA TA MOV DS, AX MOV AL, BUFFER ;AL=3CH MOV CL, 4 SHR AL, CL ;将 AL 内容右移 4 位 AL=03H ,先取高四位3 CMP AL,9
37、; JG LP1 ;若 AL 内容大于 9,说明 AL 内容在 A-F 之间ADD AL,30H ;否则 AL 内容小于 9,将 AL 内容转换为ASCII 码即 AL+30H-AL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - JMP LP2 LP1:ADD AL,37H ;将 AL 内容转换为ASCII 码即 AL+37H-AL (如 0CH+37H=43H 大写 C 的 ASCII 码)LP2:MOV ANSWER,
38、 AL ;将结果存入ANSWER 第一个单元MOV AL, BUFFER ;AL=3CH AND AL, 0FH ; 取 AL 内容低四位C CMP AL,9 ; JG LP3 ;若 AL 内容大于 9,说明 AL 内容在 A-F 之间ADD AL,30H ;否则 AL 内容小于 9 JMP LP4 ;将 AL 内容转换为ASCII 码即 AL+30H-AL LP3: ADD AL,37H ;将 AL 内容转换为ASCII 码LP4: MOV ANSWER+1, AL ;将结果存入ANSWER 第二个单元MOV AH, 4CH INT 21H CODE ENDS END START 6. 假设
39、数据项定义如下:DATA1 DB HELLO ! GOOD MORNING ! DATA2 DB 20 DUP(?) 用串操作指令编写程序段,使其分别完成以下功能:i. 从左到右将DATA1 中的字符串传送到DATA2 中;LEA SI, DATA1 ;SI=0000H LEA DI, DA TA2 ;DI=0014H MOV CX, 20 ;20 个字符REP MOVSB ; 将 DATA1 中的字符串传送到DATA2 中ii. 传送完后,比较DATA1 和 DATA2 中的内容是否相同;LEA SI, DATA1 LEA DI, DA TA2 MOV CX, 20 ;20 个字符REPE
40、CMPSB ;CX 不为零时,字符相同继续比较,不同指令停止JNZ STOP ;若不同 - STOP ;否则都相同iii. 把 DATA1 中的第 3 和第 4 个字节装入AX ;MOV AX, WORD PTR DATA1+2 iv. 将 AX 的内容存入DATA2+5 开始的字节单元中。MOV WORD PTR DATA2+5, AX7. 执行下列指令后,AX 寄存器中的内容是多少?TABLE DW 10,20,30,40,50 ENTRY DW 3 MOV BX,OFFSET TABLE ;BX=0000H( 地址 ) ADD BX,ENTRY ;BX=0003H MOV AX ,BX
41、;AX=1E00H 8. 编写程序段,将STRING1 中的最后20 个字符移到STRING2 中(顺序不变 )。DATA SEGMENT 0AH 00H 14H 00H 1EH 00H 28H 00H 32H 00H 03H 00H 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH TABLE ENTRY 48H 45H 4CH 4CH 4FH 21H 20H 47H 4FH 4FH 44H 20H 4DH 4FH 52H 4EH 49H 4EH 47H 21H ? ? 0000H 0001H 00
42、02H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH 000CH 000DH 000EH 000FH 0010H 0011H 0012H 0013H 0014H 0026H DATA1 H E L L O ! G O O D M O R N I N G ! DATA2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - STRING1 DB “ 0123456789A
43、BCDEFGHIJKLMNOPQRSTUVWXYZ”;36 个字符 ASCII 码STRING2 DB 20 DUP(?) L EQU STRING2- STRING1 ; STRING1 的长度 =36 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX LEA SI, STRING1 ;取 STRING1 串的首地址 =0000H LEA DI, STRING2 ;取 STRING2 串的首地址 =0024H=36 MOV CX, 20 MOV A
44、X, L ;AX=36=0024H SUB AX, CX ;AX=36-20=0024H-0014H=0010H ADD SI, AX ;SI=SI+AX=0000H+0010H=0010H REP MOVSB MOV AH, 4CH INT 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
45、AX BX左移一次MOV DX, 1234H SHL BX, 1 ;BX=BX*2=3578H, CF=1 RCL AX, 1 ;AX=AX*2+CF=ACF1H, CF=0 RCL DX, 1 ;DX=DX*2+CF=2468H, CF=0 MOV AH, 4CH INT 21H CODE ENDS END START 10. 试编写程序,比较AX ,BX ,CX 中带符号数的大小,并将最大的数放在AX 中。CODE SEGMENT ASSUME CS:CODE START: MOV AX, -5 MOV BX, 6 MOV CX, 10 CMP AX, BX JGE LL1 XCHG AX
46、, BX LL1: CMP AX, CX JGE LL2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - XCHG AX, CX LL2: MOV AH, 4CH INT 21H CODE ENDS END START 11. 若接口 03F8H 的状态的数据(b1)和(b3)同时为 1,表示接口03F8H 有准备好的8 位数据,当CPU 将数据取走后, b1 和 b3 就不再同时为1 了。仅当又有数据准备好时才再同时为1。
47、试编写程序,从上述接口读入20 个数据,并顺序放在DATA 开始的地址中。DATAS SEGMENT DATA DB 20 DUP(?) DATAS ENDS CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DA TA MOV DS, AX MOV CX, 20 LEA BX, DATA MOV DX, 03F8H LOP: IN AL, DX ;读接口状态NOT AL ;将 AL 内容取反,若b1=1 和 b3=1 取反后全为0 TEST AL, 00001010b ;判断接口03F8H 的状态的数据 (b1)和(b3)是否同时为
48、1 JNZ LOP ;若相与的结果不为零表示接口没有准备好,继续读状态IN AL, DX ;若相与的结果为零表示接口准备好;读接口数据MOV BX, AL ;存数据INC BX DEC CX JNZ LOP ;从接口读入20 个数据MOV AH, 4CH INT 21H CODES ENDS END START 12. 画图说明下列语句分配的存储空间及初始化的数据值(1) DATA1 DB BYTE ,12,12H,2 DUP(0 ,?, 3) (2) DATA2 DW 2 DUP(0,1,2),?, -5,256H 13. 请用子程序结构编写如下程序:从键盘输入一个二位十进制的月份数(011
49、2),然后显示出响应的英文缩写名。14. 给出下列等值语句:LPHA EQU 100 BETA EQU 25 GRAMM EQU 4 试求出下列表达式的值:(1) ALPHA*100+BETA;MOV AL, LPHA MOV BL, 100 42H 59H 55H 45H 0CH 12H 00H ? 03H 00H ?H 03H DATA1 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH 0000H 0001H 0002H 0000H 0001H 0002H ? FFFB 0256H DATA2
50、0000H 0002H 0004H 0006H 0008H 000AH 000CH 000DH 000EH 0010H 0012H 0014H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 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-AX S