微机原理与接口技术周荷琴课后习题答案. 下载本文

JBE NEXT2

NEXT: STOSB

NEXT2:LOOP AGAIN2 ;将STRING字符串清零

LEA DI,STRING MOV AL,0

MOV CX,COUNT CLD

REP STOSB RET

MAIN ENDP CODE ENDS END MAIN

13、完整的程序如下: CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR

PUSH DS XOR AX,AX PUSH AX

XOR SI,SI ;SI中存放DX中1的个数 XOR DX,DX MOV AX,1234H MOV CX,16

AGAIN:ROR AX,1

JNC NEXT INC SI PUSH CX DEC CL MOV BX,1 SHL BX,CL OR DX,BX POP CX

NEXT: LOOP AGAIN

RET

MAIN ENDP CODE ENDS END MAIN

程序的运行结果:AX=1234H DX=2C48H SI=0005H,结果正确 14、参考答案: 指令 (1)JMP PROG_N (2)JMP BX (3)JMP [BX] 跳转类型 段内直接跳转 段内间接跳转 段内间接跳转 程序的转向* IP=0278H IP=(BX)=0300H IP=((DS)×16+(BX))=(20300H)=4800H (4)JMP FAR PROG_F (5)JMP DWORD PTR [BX] 段间直接跳转 段间间接跳转 IP=0ABCH CS=3400H IP=(20300H)=4800H CS=(20302H)=00FFH *如果是段内转移,跳转指令只改变IP寄存器的内容,前三条跳转指令是段内跳转;如果是段间跳转,跳转指令同时改变IP和CS寄存器的内容,后两条跳转指令是段间跳转。 15、参考答案: 寄存器 AX BX CX DX LOOP NEXT 2 3 4 5 4 7 11 16 3 2 1 0 1 0 0 0 LOOPE NEXT 2 4 3 1 LOOPNE NEXT 2 3 4 7 3 2 1 0 注意:三个循环指令LOOP、LOOPE和LOOPNE终止循环的条件是不一样的。 16、参考答案: 中断向量表的作用:中断向量表用于存放256种中断的中断服务程序的入口地址,每种类型中断的中断服务程序的入口地址占用4个字节,存储CS和IP,总共需要1024个字节,即1K字节。

中断向量表位于内存的最低1K字节,地址范围为:00000H~003FFH。

类型3的中断的中断服务程序的入口地址存放在:0000CH~0000FH这四个单元。 17、参考答案:如下图所示

解释:①由于中断类型号为2,所以该类型中断的中断服务程序入口地址占据内存最低1K字节的2×4,2×4+1,2×4+2,2×4+3四个单元。②前两个单元存放中断服务程序IP值,即0016H,后两个单元存放中断服务程序的CS值,即

0485H。③由于CS和IP值均为一个字,所以在存放中断服务程序入口地址的CS和IP值时,低位字节存放在低地址区,高位字节存放在高地址区。

18、参考答案:

(1)中断类型号为16

(2)该中断服务程序的起始地址是:CS:IP=D169H:240BH

解释:①由于中断向量表中地址为0040H开始存放某类型中断的中断服务程序的入口地址,所以0040H除以4就可以得到该类型中断的中断类型号n,即n=16。②中断服务程序的入口地址的CS值存放在0042H单元里,IP值存放在0040H单元里。 19、参考答案: 中断类型号(专用中断) 0:被0除 1:单步中断,由Debug单步调试引起 2:NMI 响应中断的条件 当除数为0或商超过了寄存器所能表示的范围,就产生了一个类型为0的中断 当TF=1,每条指令执行后,CPU自动产生类型为1的中断 不可屏蔽中断,用来处理紧急事件,如:电源掉电,CPU必须予以响应 3:断点中断,由Debug设置断点引起 用debug调试程序时,可用g命令设置断点,当CPU执行到断点时便产生类型为3的中断,同时显示当前各寄存器和有关存储器的内容及下条要执行的指令,供用户检查。 如果当前运算的结果产生溢出,则OF=1,下面紧跟溢出中断指令INTO,立刻产生一个类型为4的中断 4:溢出中断

20、参考答案:

MOV CX,N ;4个时钟周期

NEXT: NOP ;N×3个时钟周期 NOP ;N×3个时钟周期 LOOP NEXT ;(N-1)×17+1×5个时钟周期

5?10?3?25000个时钟周期 由f=5MHz,t=0.2us,延时5ms需要?60.2?10所以:4+N×3+N×3+(N-1)×17+1×5=25000 解得:N=1087

第四章(p205~p206)

1、参考答案(写出各变量在内存中的存储状况) A1 DW 23H,5678H

A2 DB 3 DUP(?),0AH,0DH,’$’ A3 DD 5 DUP(1234H,567890H) A4 DB 4 DUP(3 DUP(1,2,’ABC’))

①变量A1占4个字节,在内存中的存储状况(以十六进制表示,从左到右地址依次增加,以下同): 23 00 78 56

②变量A2占6个字节,在内存中的存储状况: 00 00 00 0A 0D 24

③变量A3占40个字节,在内存中的存储状况: 34 12 00 00 90 78 56 00 (再重复4遍)

④变量A4占60个字节,在内存中的存储状况:

01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43 01 02 41 42 43(带下画线部分重复4遍)

2、参考答案(写出各指令执行后的结果) 指令 MOV AX,00FFH AND 1122H+3344H MOV AL,15 GE 1111B MOV AX,00FFH LE 255+6/5 AND AL,50 MOD 4 结果 AX=0066H,先加后与 AL=0FFH AX=0FFFFH,先加后比较 AL=02H OR AX,0F00FH AND 1234 OR 00FFH AX=0FFFFH,先与后或,再把计算的结果同AX进行或运算,最终结果保存在AX中 3、参考答案:

L=6,L的值实际就是BUF变量在内存中占有的字节数。 4、参考答案:

PLENGTH=22,PLENGTH的值实际就是三个变量PAR、PNAME和COUNT在内存中占有的总的字节数。

5、参考答案:AX=1 BX=20 CX=1

6、参考答案: AH=00H 7、(1)利用中断调用产生5秒延时 data segment

s db '5 second is gone',13,10,'$' data ends

code segment

assume cs:code,ds:data main proc far mov ax,data mov ds,ax mov ah,2ch int 21h ;取得当前时间:ch?时 cl?分 dh?秒 dl?1/100秒 mov bl,dh continue: mov ah,2ch int 21h sub dh,bl cmp dh,5 jb continue ;判断两次取得时间间隔是否为5秒钟,如果不是则继续读取时间 lea dx,s ;如果达到5秒,则显示一条信息 mov ah,9 int 21h mov ax,4c00h int 21h main endp code ends end main

(2)利用中断调用,在屏幕上显示1~9之间的随机数

思路:利用DOS系统功能调用得到当前时间,其中的dl寄存器中存放的是1/100秒,可以用来产生随机数。

code segment assume cs:code main proc far mov ah,2ch int 21h mov al,dl ;取得1/100秒,不同时间运行该程序时得到的这个数字也不一样,具有随机性 mov ah,0 mov bl,9 ;除以9 div bl ;相除后的余数ah的范围为0~8 inc ah ;加1后得到1~9之间的数 add ah,30h ;转换为ASCII码 mov dl,ah mov ah,2 int 21h ;在屏幕上显示该数 mov ax,4c00h int 21h main endp code ends end main 8、(1)二进制到压缩BCD码的转换。把AX中的二进制数转换为压缩的BCD码,仍然存放AX寄存器中。

例如:如果AX中的二进制数为0010 0110 1001 0100B=2694H,化成十进制数是9876,其压缩的BCD码是1001 1000 0111 0110,用十六进制表示是9876H。即这种转换实际就是把2694H转换为9876H。考虑到AX中能够存放的最大的四位压缩BCD数为9999H,所以在转换之前需要判断AX中的二进制数不能超过9999,即270FH。

第五章(p237~238)

1、静态RAM和动态RAM的区别 集成度 容量 刷新 速度 应用场合 静态RAM(SRAM) 低 小 无 快 高速缓冲存储器(CACHE) 动态RAM(DRAM) 高 大 附加刷新电路 较慢 内存条 2、ROM、PROM、EPROM、EEPROM在功能上各有何特点 答案略(见教材p208)

3、DRAM的CAS和RAS输入的用途是什么?