《26616微机原理与接口技术基于.8086和Proteus仿真习题参考.答案.doc》由会员分享,可在线阅读,更多相关《26616微机原理与接口技术基于.8086和Proteus仿真习题参考.答案.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 章 习题答案1.答: 为了区别所使用的数制,一般用以下两种书写格式表示: 用括号将数字括起,后面加数制区分,数制用下标的形式给出; 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母 B(或 b) 、D(或 d) 、O(或 o)或 Q(或 q) 、H(或 h) 。 例如:十六进制数 56.78 可以表示成(56.78)16 或 56.78H;十进制数 56.78 可以表示成(56.78)10 或 56.78D。 2.答: 123D 采用十进制,0AFH 采用十六进制,77Q 采用八进制,1001110B 采用二进制。3.答: 字长为 8 位的二进制数原码表示的最大值:
2、127,最小值:-127;补码表示的最大值: 127,最小值:-128。 字长为 16 位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最 大值:32767,最小值:-32768。4.答: (1)125D=0111 1101B=7DH (2) 255D=1111 1111B=FFH (3)72D=0100 1000B=48H (4)5090D=0001 0011 1110 0010B=13E2H5.答: (1)1111 0000B=240D=F0H (2) 1000 0000 B =128D =80H (3)1111 1111 B =255 D =FFH (4)010
3、1 0101B=85D=55H6.答: (1)FFH=255D=1111 1111B (2) ABCDH=43947D=1010 1011 1100 1101B (3) 123H=291D=0000 0001 0010 0011B (4) FFFFH=65535D=1111 1111 1111 1111B7.答: (1)8 位时(16)原=0001 0000 ; (16)补=0001 0000; 16 位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000; (2) 8 位时(-16)原=1001 0000 ; (-16)补=1111 0
4、000; 16 位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;(3) 8 位时(+0)原=0000 0000; (+0)补=0000 0000; 16 位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000; (4) 8 位时(-0)原=1000 0000 ; (-0)补=0000 0000; 16 位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000; (5) 8 位时(127)原=0111 1111; (127)
5、补=0111 1111; 16 位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111; (6) 8 位时-128 超过原码表示的范围; (-128)补=1000 0000; 16 位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000; (7) 8 位时(121)原=0111 1001 ; (121)补=0111 1001; 16 位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001; (8) 8 位时(-9)原=
6、1000 1001 ; (-9)补=1111 0111; 16 位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111; 8.答: (1) x补=1100 0010;(2)-x补=0000 1101;(3)x原=1100 0010;(4)x反 =1011 1101。9.答: (1)AB;(2)AB10.答: (1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。11.答: (1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100; (5)0000 0000;(6)1010 1100;
7、(7)=0101 0011。12.答: (1)30H=48,字符为0 ;(2)39H=57,字符为9 ;(3)42H=66,字符为B ;(4)62H=98,字符为b ;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;13、答:十进制49123762压缩 BCD 码0100 1001B0001 0010 0011B0000 0111B0110 0010B非压缩 BCD 码0000 0100 0000 1001B0000 0001 0000 0010 0000 0011B0000 0111B0000 0110 0000 0010BASCII 码3439H313233H37H3632H
8、第 2 章 习题答案1.(1)答: 物理地址:物理地址(PA)是 20 位无符号二进制数,是 CPU 访问存储器的实际地址。 每个存储单元对应一个物理地址。8086 存储空间的物理地址范围是:00000HFFFFFH。 逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的 地址称为逻辑地址,记为:段地址:偏移地址。 段地址:8086 规定各逻辑段从节的整数边界开始,即段首地址二进制值的低 4 位是 0000,把段首地址的高 16 位称为段基址或段地址。 偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址 EA) 。段地址和偏移地址都是是 16 位无
9、符号二进制数。 (2)答: 时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个 脉冲周期称为时钟周期,又称为 T 状态或 T 周期,时钟周期是微机系统工作的最小时间单 元。 总线周期:当 CPU 访问存储器或输入/输出端口时,需要通过总线进行读或写操作, 这个过程称为总线周期(Bus Cycle) 。总线周期是利用总线完成一次读/写所需要的时间。 指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle) 。指令周期由 1 个或多个总线周期组成。 (3)答: 最小模式:也称为单处理器模式,是指系统中只有一片 8086 微处理器,所连接的存储 器
10、容量不大、片子不多,所要连接的 I/O 端口也不多,系统的控制总线就直接由 CPU 的控 制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。 最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理 器,其中一个是主处理器 8086,其他的处理器称为协处理器,承担某方面专门的工作。需 要增加一片 8288 来对 8086CPU 发出的控制信号进行变换和组合,以得到对存储器或 I/O 端口的读/写信号和对锁存器、总线收发器的控制信号。2.答: EU:负责指令的执行,即从总线接口部件 BIU 的指令队列取指令,指令执行后向 BIU 送回运算结果,同时把
11、运算结果的状态特征保存到标志寄存器中。 BIU:负责 CPU 与存储器、I/O 设备之间的数据传送。BIU 完成以下操作:取指令送 给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行 部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。 8086 的 BIU 和 EU 在很多时候可以并行工作,使得取指令、指令译码和执行指令这些 操作构成操作流水线。 当指令队列中有两个空字节,且 EU 没有访问存储器和 I/O 接口的要求时,BIU 会 自动把指令取到指令队列中。 当 EU 准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过 程中,如果需要访
12、问存储器或者 I/O 设备,那么 EU 会向 BIU 发出访问总线的请求,以完 成访问存储器或者 I/O 接口的操作。如果此时 BIU 正好处于空闲状态,那么,会立即响应 EU 的总线请求;但如果 BIU 正在将某个指令字节取到指令队列中,那么,BIU 将首先完 成这个取指令操作,然后再去响应 EU 发出的访问总线的请求。 当指令队列已满,而且 EU 又没有总线访问时,BIU 便进入空闲状态。 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接 着的那条指令了,而 BIU 往指令队列装入指令时,总是按顺序进行的。在这种情况下,指 令队列中已经装入的指令就没有用了,会被自动
13、消除。随后,BIU 会往指令队列中装入另 一个程序段中的指令。3.答: 地址信号是 CPU 发送给内存或 I/O 设备的,所以地址线是单向的; 数据信号可以从 CPU 发送给内存或 I/O 设备,也可以从内存或 I/O 设备发送给 CPU, 故而数据线是双向的。4.答: 8086CPU 中有 14 个寄存器。它们是:4 个 16 位的通用寄存器:AX、BX、CX、DX 和 8 个 8 位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器 SP、BP、 SI、DI;4 个 16 位的段寄存器 CS、DS、SS 和 ES;标志寄存器 FR;指令指针 寄存器 IP。 功能
14、略。5.答: (1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1; (2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0; (3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。6.答: 8086CPU 可寻址的存储器地址范围是 00000HFFFFFH; 可寻址的 I/O 端口地址范围是 0000HFFFFH。7.答: 由于 8086CPU 提供 20 位地址,但 8086 中可用来存放地址的寄存器,如 IP、SP、BX、SI 等都是 16 位的,只能直接寻址 64
15、KB。为了寻址 1MB 存储空间, 8086CPU 采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑 段的容量小于或等于 64KB。分段后,对存储器的寻址操作不再直接用 20 位的物理地址, 而是采用段地址加段内偏移地址的二级寻址方式。8.答:将 AH 的内容送存储单元的操作过程中:;/1,0,1,/1MIOWRRDDTR将 I/O 端口的内容送 AL 的操作过程中:。 /0,1,0,/0MIOWRRDDTR9.答:BHE A0有效的数据引脚操 作0 0AD15AD0(一个总线周期同时访问奇体和偶 体,从奇地址单元读/写字数据的高 8 位,从偶地从偶地址读/写一个 字址单
16、元读/写字数据的低 8 位)1 0AD7AD0从偶地址读/写一个 字节0 1AD15AD8从奇地址读/写一个 字节0 1 1 0AD15AD8(第一个总线周期从奇字数据的低 8 位) AD7AD0(第二个总线周期从偶地址单元读/写 字数据的高 8 位)从奇地址读/写一个 字10.答: 8086 系统复位后,指令指针(IP)为 0000H;CS 寄存器为 FFFFH,其他寄存器为 0000H;指令队列清空。11.答: 8086 的 A19/S6A16/S3 和 AD15AD0 是复用信号,需要地址锁存器将地址信息保 存起来,为外接存储器或外设提供地址信息。 需要锁存的信号是:地址信号及BHE信号
17、。12.答: 8086CPU 一个基本的总线周期包含 4 个时钟周期:T1、T2、T3 和 T4 。 在 T1 状态,有效,指示 CPU 访问的是存储器还是外设,之后 CPU 往多路复用IO/M 总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在 T1 状态,CPU 还 必须在 ALE 引脚上输出一个正脉冲作为地址锁存信号。信号也在 T1 状态送出,它用BHE 来表示数据传送的字宽。 在 T2 状态,CPU 从总线上撤销地址,使总线的低 16 位浮空,置成高阻状态,为传输 数据作准备。总线的最高 4 位(A1916)用来输出本总线周期的状态信息。读信号或写信号在 T2 状态变为有效
18、,指示 CPU 将进行哪种操作(读或写) 。RDWR 在 T3 状态,多路总线的高 4 位继续提供状态信息,而多路总线的低 16 位上出现由 CPU 读出的数据或者 CPU 从存储器或端口写入的数据。 在 T4 状态和前一个状态的交界处,CPU 对数据总线进行采样,获得数据,总线周期 结束。13.答: 在有些情况下,外设或存储器速度较慢,不能及时地配合 CPU 传送数据。这时,外设 或存储器会通过“READY”信号线在 T3 状态启动之前向 CPU 发一个“数据未准备好”信 号,于是 CPU 会在 T3 之后插入 1 个或多个附加的时钟周期 TW。取决与外设或存储器速 度。14.答: 两种操作
19、时序的不同之处发生在 T1 和 T2 状态。 在 T1 状态,读周期:应输出低电平;写周期:应输出高电平。R/DTR/DT 在 T2 状态,读周期:有效,而无效,AD15AD0 为高阻态;写周期:RDWR 变为无效,而写信号变为有效,AD15AD0 在地址撤销之后立即送出要写入存储RDWR器或外设端口的数据。15.答:在最小模式下,读信号、ALE 和、等信号直接由 CPU 给出;RDR/DTDEN在最大模式下,总线控制器 8288 根据和状态信号产生读信号和, 12S,S0SMRDCIORCALE 和、DEN 也是由 8288 发出的,而且 DEN 信号的极性与 CPU 在最小模式下发R/DT
20、 出的信号正好相反。DEN第 3 章 习题答案1.答: 指令中关于如何求出操作数有效地址的方法称为寻址方式。 8086CPU 支持多种寻址方式,根据操作数的类型及来源大致分为 3 类:数据寻址、转 移地址寻址和 I/O 寻址。 2.答: 8086 汇编指令可以采用 7 种基本的数据寻址方式:立即寻址;寄存器寻址;直 接寻址;寄存器间接寻址;寄存器相对寻址;基址变址寻址;相对基址变址寻址。与存储器寻址方式(后 5 种)相比,寄存器寻址方式最快。 3.答: 如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。 8086 系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指
21、令中利用前 缀指明段超越。例如: MOV ES:1225H,AX 4.答: (1)寄存器寻址方式 (2)寄存器间接寻址方式,PA=10300H (3)寄存器间接寻址方式,PA=20200H (4)直接寻址方式,PA=10060H (5)基址变址寻址方式,PA=10500H (6)相对基址变址寻址方式,PA=12300H (7)直接寻址方式,PA=11000H (8)寄存器相对寻址方式,PA=10306H (9)直接寻址方式,PA=10065H 5.答:(1 )(2 )(3 )(4 )(5 )(6 )(7 )(8 )(9 )(10 )(11 )6.答: (1)源操作数的寻址方式不同。MOV AX
22、,3000H 指令的源操作数采用的是立即数寻 址方式,MOV AX,3000H指令的源操作数采用的是直接寻址方式。 (2)指令执行后,AX 的值不同。MOV AX,MEM 指令执行后,AX 得到的是 MEM 单元的内容,而 MOV AX,OFFSET MEM 指令执行后,AX 得到的是 MEM 单元的地址。 (3)指令不同。MOV AX,MEMMOV AX,MEM 指令执行后,AX 得到的是 MEM 单元的内容,而 LEA AX,MEM 指令执行后,AX 得到的是 MEM 单元的地址。 (4)转移的类型不同。JMP SHORT L1 指令实现的是段内转移,而 JMP NEAR PTR L1 指
23、令实现的是段间转移。 (5)指令的执行结果不同。CMP DX,CX 指令执行后,DX 的值不变,而 SUB DX,CX 指令执行后,DX 的值是两寄存器值的差。 (6)操作数所在段不同。MOV BPSI,CL 指令访问的是堆栈段的存储单元,而MOV DS:BPSI,CL 指令访问的是数据段的存储单元。 7.答: (1)MOV BYTE PTR BP,200 指令执行后, (58200H)=200H (2)MOV WORD PTR BX,2000 指令执行后, (22400H)=2000H 8.答: 当前栈顶地址是:FE00H:2010H; 执行 PUSH BX 指令后,栈顶地址变为:FE00H
24、:200EH,栈顶 2 字节内容是:3457H。 9.答: (1) (DX)=3C62H,CF=1 (2) (DX)=03C6H,CF=0 (3) (DX)=18A0H,CF=1 (4) (DX)=2BC6H,CF=0 (5) (DX)=18B7H,CF=1 (6) (DX)=BCC5H,CF=0 10.答:(AX)CFZFOFSFPF(1)134EH00001(2)0821H00001(3)F142H10011(4)0A6910011(5)F596-(6)0A690000111.答: (1) CMP CX,DXJA NEXT (2)CMP AX,BXJNA NEXT (3)CMP DX,0J
25、Z NEXT (4)CMP CX,DXJBE NEXT 12.答: (1)程序转向 L1。 (2)程序转向 L1。 (3)程序转向 L2。 (4)程序转向 L5。 (5)程序转向 L5。 13.答: 因为普通运算指令执行的是二进制数的运算,而 BCD 码是十进制数,所以,需要对 运算结果进行十进制调整。 在做 BCD 码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作 BCD 码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。14.答:MOV Cl,3SHR bx,cl 15.答:(略) 16.答:DATASEGMENT COUNT=100H ORG 1000H D_D
26、ATADB COUNTDUP(?) ORG 2170H S_DATADB COUNT/5 DUP(1,2,3,4,5) DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOVAX,DATA MOVDS,AX MOVES,AX LEASI,S_DATA LEADI,D_DATA MOVCX,COUNT REPMOVSB MOVAL,1 MOVCX,COUNT LEADI,D_DATA AGAIN: CMPBYTE PTR DI,AL JNZNEXT MOVBYTE PTR DI, NEXT: INC DI LOOP AGAIN
27、 EXIT:MOVAH,4CH INT 21H CODEENDS END START17.答:CODESEGMENT ASSUME CS:CODE START: MOV AX,5678H MOV DX,1234H NOT AX NOT DX ADD AX,1 ADC DX,0 EXIT: MOVAH,4CH INT 21H CODEENDS END START18. 答:;本程序未考虑溢出的情况。 DATASEGMENT A1 DW 5050H A2 DW ?;存 A1 的反码 A3 DW ?;存 A1 的补码 DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DA
28、TA START: MOVAX,DATA MOVDS,AX MOVAX,A1 NOTAX MOVA2,AX INCAX MOVA3,AX EXIT: MOVAH,4CH INT 21H CODEENDS END START19. 答:20. 答:DATASEGMENT;AT 5000H ORG3481H DATDB 12H DB ?,?,? DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOVAX,DATA MOVDS,AX MOVAL,DAT NEGAL MOVDAT+1,AL MOVAL,DAT XORAL,00001111B MOV
29、DAT+2,AL MOVAL,DAT ORAL,11110000B MOVDAT+3,AL EXIT: MOVAH,4CH INT 21H CODEENDS END STARTCOUNT=1000 DATASEGMENT ORG1000H DATDB10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200) ORG2000H MINDATDB ? DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOVAX,DATA MOVDS,AX LEASI,DAT MOVCX,COUNT DECCX MOVAL,SI NEX
30、T:INC SI CMPAL,SI JLEISMIN MOVAL,SI ISMIN: LOOPNEXT MOVMINDAT,AL EXIT: MOVAH,4CH INT 21H CODEENDS END START21. 答:DATASEGMENT STRING1DB hELLO! COUNT1=$-STRING1 STRING2DB hEL1O! COUNT2=$-STRING2 IMDB MATCH$ NMDB NOT MATCH$ DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOVAX,DATA MOVDS,AX LEASI,ST
31、RING1 LEADI,STRING2 MOVCX,COUNT1 MOVBX,COUNT2 CMPCX,BX JNZDISPNOTMATCH NEXT: MOVAL,SI MOVAH,DI CMPAL,AH JNZDISPNOTMATCH INCSI INCDI LOOPNEXT ISMATCH: MOVDX,OFFSET IM MOVAH,9 INT21H JMPEXIT DISPNOTMATCH: MOVDX,OFFSET NM MOVAH,9 INT21H EXIT: MOVAH,4CH INT 21H CODEENDS END START22. 答:23. 答:DSEGSEGMENT
32、DATADB 5,6,7,8 DW ? DATA2 DB 1,10,100,20 DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX MOVDX,0 MOVCX,4 LEASI,DATA LEADI,DATA2 NEXT: MOVAL,DI MOVBL,SI CALLDOMUL ADDDX,AX INCDI INCSI LOOPNEXT MOVWORD PTR DATA+4,DX EXIT: MOVAH,4CH INT 21HDOMUL PROC MULBL RET DOMUL ENDP CODEENDS
33、 END STARTMOVCX,100 MOVAX,SEG LIST MOVDS,AX MOVAX,SEGBLK MOVES,AX LEASI,LIST ADDSI,CX LEADI,BLK ADDDI,CX STD REPMOVSB24. 答:25. 答: JMP SHORT LAB 指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标 的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)16+(IP)+位移量。 (1)转移目标的物理地址=(CS)16+0158H (2)转移目标的物理地址=(CS)16+0182H (3)转移目标的物理地址=(CS)16+017A
34、H (4)转移目标的物理地址=(CS)16+01E2H 26. 答:DSEGSEGMENT BUFFER DW 8 DB 12345678 DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX MOVCX,BUFFER SARCX,1 LEASI,BUFFER MOVDI,SI ADDDI,2 AGAIN: ADDSI,2 MOVAL,SI ANDAL,0FH SALBYTE PTR SI+1,1 SALBYTE PTR SI+1,1 SALBYTE PTR SI+1,1 SALBYTE PTR SI+1,
35、1 ORAL,BYTE PTR SI+1 MOVDI,AL INCDI LOOPAGAIN EXIT: MOVAH,4CH INT 21H CODEENDS END STARTDSEGSEGMENT ORG 10H DATDB10 DB? DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX MOVAL,DAT MOVBL,AL SALBL,1 ADDAL,BL MOVCL,2 SALBL,CL ADDAL,BL MOVDAT+1,AL EXIT: MOVAH,4CH INT 21H CODEENDS EN
36、D START27. 答:28. 答:DSEGSEGMENT ORG10H DATDB 10H,20H DB ?,? DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX MOVAL,DAT MOVAH,DAT+1 MOVCL,3 SARAX,CL MOVDAT+2,AL MOVDAT+3,AH EXIT: MOVAH,4CH INT 21H CODEENDS END STARTDSEGSEGMENT BLOCK DW 8 DUP (10H,20H,-3,-9) DSEGENDS CODESEGMENT A
37、SSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX LEASI,BLOCK MOVCX,32 AGAIN: MOVAX,SI CMPAX,0 JNSNEXT NEGAX MOVSI,AX NEXT: INC SI INC SI LOOPAGAIN EXIT: MOVAH,4CH INT 21H CODEENDS END START29. 答:DSEGSEGMENT ORG3030H DATDW1234H,-1234H,?,? DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG
38、MOVDS,AX MOVAX,DAT MOVBX,DAT+2 IMULBX MOVDAT+4,AX MOVDAT+6,DX EXIT: MOVAH,4CH INT 21H CODEENDS END START第 4 章 习题答案1. 答: 标号是指令的符号地址,可用作控制转移指令的操作数。 标号具有 3 种属性:段属性、偏移属性和类型属性。 2. 答: 变量是存储单元的符号地址。 变量具有 3 种属性:段属性、偏移属性和类型属性。 3. 答: 伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在 汇编过程中告诉汇编程序如何汇编源程序。 宏是一个以宏名定义的指令序列。一旦把
39、某程序段定义成宏,则可以用宏名代替那段 程序。在汇编时,要对宏进行宏展开,即把以宏名表示的地方替换为该宏对应的指令序列 的目标代码。宏指令可以看成指令语句的扩展,相当于多条指令语句的集合。 4. 答: 汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作 符、数值回送操作符和属性操作符。 操作符所完成的运算在汇编阶段进行。 5. 答: 略。 6. 答: (1)DB1DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2DBSTUDENT (3)BD3DW12H,0ABCDH (4)COUNTEQUDB2-DB1 7. 答: 第一个 OR 表示该指令是 OR
40、指令,在程序运行时,该 OR 操作被执行。 第二个 OR 是逻辑操作符 OR,在汇编时,OR 运算被执行。 8. 答: (1) (AX)=1 (2) (AX)=2 (3) (CX)=5 (4) (DX)=0AH (5) (CX)=1 (6) (DX)=4 9. 答:略。10. 答:11. 答:12. 答:DSEGSEGMENT STRING DB NEXT123DF$ DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX LEASI,STRING MOVCX,0 AGAIN: MOVAL,SI CMPAL,
41、$ JZNEXT INCCX INCSI JMPAGAIN NEXT: MOVDX,CX MVDAT: MOVSI+2,AL DECSI MOVAL,SI LOOPMVDAT MOVSI+2,AL MOVWORD PTR SI,DX EXIT: MOVAH,4CH INT 21H CODEENDS END STARTDSEGSEGMENT STRING DB It is FEB千位在 DX,AX,有效值在 AX 中 PUSHAX MOVCL,4 ROLBX,CL MOVAX,BX ANDAL,0FH MOVCL,100 MULCL ;百位在 AX POPCX ADDAX,CX;千百位在 AX
42、PUSHAX MOVCL,4 ROLBX,CL MOVAX,BX ANDAL,0FH MOVCL,10 MULCL ;十位在 AX POPCX ADDAX,CX;千百十位在 AX MOVCL,4 ROLBX,CL ANDBX,0FH ADDAX,BX RET SUB1ENDPSUB2PROC MOVDX,0 MOVCX,1000 DIVCX ;千位数字在 AX 中 MOVBX,AX MOVCL,4 RORBX,CL;千位数字移至 BX 的高 4 位 MOVAX,DX MOVCL,100 DIVCL ;百位数字在 AL 中 ORBH,AL;千百位置 BH MOVAL,AH MOVAH,0 MOV
43、CL,10 DIVCL ;十位数字在 AL 中,个位在 AH 中 MOVCL,4 SALAL,CL MOVBL,AL;十位数字置 BL 高 4 位 ORBL,AH;十位个位置 BL MOVAX,BX RET SUB2ENDPSUB3PROC PUSHBX MOVBX,0 LEADI,ASCNUM CMPAX,0 JNSCHG NEGAX MOVBYTE PTR DI,- JMPNEXT CHG: MOVBYTE PTR DI,+ NEXT: MOVDX,0 MOVCX,10000 DIVCX;万位数字在 AX 中 CMPAL,0 JZN1 MOVBX,5 ORAL,30H INCDI MOVD
44、I,AL;存万位 N1: MOVAX,DX MOVDX,0 MOVCX,1000 DIVCX CMPBX,0 JNZN2 CMPAL,0 JZN3 MOVBX,4 N2: ORAL,30H INCDI MOVDI,AL;存千位N3: MOVAX,DX MOVCL,100 DIVCL CMPBX,0 JNZN4 CMPAL,0 JZN5 MOVBX,3 N4: ORAL,30H INCDI MOVDI,AL;存百位N5: MOVAL,AH MOVAH,0 MOVCL,10 DIVCL CMPBX,0 JNZN6 CMPAL,0 JZN7 MOVBX,2 N6: ORAL,30H INCDI MO
45、VDI,AL;存十位 N7: ORAH,30H INCDI MOVDI,AH CMPBX,0 JNZSN MOVBX,1 SN: MOVCX,BX; 存数位长度 INCCX ;串长=数位+1 位符号位 LEADX,ASCNUM POPBX RET SUB3ENDP15. 答:CODESEGMENT ASSUME CS:CODE START: MOVAH,1 INT21H CMPAL,a JBNOCHG CMPAL,z JANOCHG SUBAL,20H NOCHG: MOVDL,AL MOVAH,2 INT21HEXIT: MOVAH,4CH INT 21HCODEENDS END START
46、16. 答:17.21.答:略。;键盘输入的成绩以逗号分割 ;输入完毕按回车结束 DSEGSEGMENT STRING DB 40,?,40 DUP(?) CJDB10 DUP(?) S6DB? S7DB? S8DB? S9DB? S10 DB? DSEGENDS CODESEGMENT ASSUME CS:CODE,DS:DSEG START: MOVAX,DSEG MOVDS,AX LEADX,STRING MOVAH,10 INT21H LEADI,CJ LEASI,STRING+2 MOVBH,0 MOVAL,0 AGAIN: MOVBL,SI CMPBL, JZNEXT CMPBL,
47、0DH JZNEXTSUBBL,30H MOVCL,10 MULCL ADDAL,BL INCSI JMPAGAINNEXT: MOVDI,AL INCDI MOVAL,0 INCBH INCSI CMPBL,0DH JNZAGAIN TJ: LEADI,CJ TJ1: MOVAL,DI CMPAL,100 JZADDS10 CMPAL,90 JAEADDS9 CMPAL,80 JAEADDS8 CMPAL,70 JAEADDS7 CMPAL,60 JAEADDS6 ADDS10: INCS10 JMP TJNEXTADDS9: INCS9 JMP TJNEXT ADDS8: INCS8 JM
48、P TJNEXT ADDS7: INC S7JMP TJNEXT ADDS6: INC S6 TJNEXT: INC DI DEC BH JNZ TJ1EXIT: MOVAH,4CH INT 21H CODEENDS END START第 5 章 习题答案略。第 6 章 习题答案1半导体存储器的分类如下:2随机存取存储器 RAM,又称为读/写存储器,其每个存储单元的内容可以随时按需要进 行读/写操作。RAM 主要用来保存各种输入/输出数据、中间结果、与外存交换的信息,也 可作堆栈使用。而 ROM 的内容只能读出,不能写入或改写,一般用来存放固定的程序和 数据。 3半导体存储器的主要技术指标:存储容量、读/写速度(存取时间和存储周期) 、可靠性。48086CPU 和存储器连接时要考虑:存储芯片数,AB、DB 和一些控制信号的连接,奇、 偶片的设置,地址译码方式等。 5常用的存储器地址译码方式有:全地址译码、部分地址译码、线选法。 6. 需要(16k8)/(10241)=128 片,CPU 地址线中片内寻址 10 位,片外 4 位。 7. .M/IORDA17A18A19A16 A1 D15 D8 D7 D062512RAMCSOED7D0A15A0WR6251