微机原理与接口技术周荷琴课后习题答案

发布时间 : 星期一 文章微机原理与接口技术周荷琴课后习题答案更新完毕开始阅读

题号 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) 结果 AH=04H BL=36H AX=0DAF7H CX=0FFF4H 相关寄存器内容没有改变 相关寄存器内容没有改变 DX=0186H AL=04H BH=0F0H AX=4A10H BX=1E6CH DX=4186H CF 0 0 0 0 0 0 0 0 0 0 0 0 12、参考答案:

(1)程序片段如下: LEA SI,STRING LEA DI,GET_CHAR MOV CX,26 CLD

REP MOVSB

(2)程序片段如下:先定义一个附加段,用来存放’The computer’ EXTRA SEGMENT S2 DB ‘The computer’ EXTRA ENDS …

LEA SI,STRING LEA DI,S2 MOV CX,12 CLD

REPZ CMPSB

JZ NEXT ;若比较的两个字符串相同,则跳到NEXT执行 MOV AL,0 ; 若比较的两个字符串不相同 SUB CL,12 NEG CL

MOV BL,CL ;比较的次数存入BL中 RET NEXT: MOV AL,1 MOV BL,12 RET

(3)程序片段如下:

LEA DI,STRING ;被查找的字符串STRING作为目的串 MOV AL,’&’ MOV CX,26

9

CLD

REPNZ SCASB

JNZ EXIT ;如果没有找到,直接退出 DEC DI ;找到’&’字符的位置

MOV BYTE PTR ES:[DI],20H ;用空格字符替换 EXIT: RET

(4)完整的程序如下*:

;这里的DATA既作为数据段,又作为附加段,即数据段和附加段公用一个段 DATA SEGMENT

STRING DB ‘The Personal Computer & TV’ COUNT EQU $-STRING CAPS DB COUNT DUP(0) CHART DB COUNT DUP(0) DATA ENDS

CODE SEGMENT ASSUME DS:DATA,ES:DATA,CS:CODE MAIN PROC FAR PUSH DS XOR AX,AX PUSH AX

MOV AX,DATA MOV DS,AX MOV ES,AX ;把字符串中大写字母传送到CAPS开始的单元中 LEA SI,STRING

LEA DI,CAPS MOV CX,COUNT CLD

AGAIN1:LODSB

CMP AL,41H JB NEXT1 CMP AL,5AH JA NEXT1 STOSB

NEXT1:LOOP AGAIN1 ;把字符串中其余字母传送到CHART开始的单元中 LEA SI,STRING

LEA DI,CHART MOV CX,COUNT CLD

AGAIN2:LODSB

CMP AL,41H JB NEXT CMP AL,5AH

10

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]

跳转类型 段内直接跳转 段内间接跳转 段内间接跳转 11

程序的转向* 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的中断 不可屏蔽中断,用来处理紧急事件,如:电源掉电,12

联系合同范文客服:xxxxx#qq.com(#替换为@)