微机原理课后作业参考答案 下载本文

1.3 完成下列数制的转换

(1) 10100110 B = (166) D = (A6) H (2) 0.11 B = (0.75) D

(3) 253.25 = (11111101.01) B = (FD.4) H

(4) 1011011.101 B = (5B.A) H = (10010001.0110 0010 0101) BCD

1.5 写出下列真值对应的原码和补码的形式 (1) X = -1110011 B (2) X = -71 D

(3) X = +1001001 B

解:(1) [X]原 = 11110011 B , 负数,[X]补 = [X]反 + 1 = 10001101 B (2) [X]原 = 11000111 B , 负数,[X]补 = [X]反 + 1 = 10111001 B (3) [X]原 = 01001001 B , 正数,[X]补 = [X]原 = 01001001 B

1.7 已知X和Y的真值,求[X+Y]的补码 (1) X = -1110111 B Y = +1011010 B (2) X = 56 D Y = -21 D 解:

(1) [X]原 = 11110111 B , 负数,[X]补 = [X]反 + 1 = 10001001 B Y为正数,[Y]原 = [Y]补 = 01011010 B

所以,[X+Y]补 = [X]补 + [Y]补 = 11100011 B (2) [X]原 = 00111000 B = [X]补

[Y]原 = 10010101 B , [Y]补 = 11101011 B [X+Y]补 = [X]补 + [Y]补 = 00100011 B

1.8 已知X = -1101001 B, Y = -1010110 B, 用补码表示X-Y = ? 解: [X]原 = 11101001 B, [X]补 = 10010111 B [-Y]原 = 01010110 B, [-Y]补 = 01010110 B 所以,[X-Y]补 = [X]补 + [-Y]补 = 11101101 B

所以,[X-Y]原 = 10010011 B= -0010011 B = -19 D

1.12 如果74LS138译码器的C,B,A三个输入端的状态为011,此时该译码器的8个输出端中哪一个会输出“0”

解:011 B = 3 D, #Y3低电平有效

2.12 若8088工作在单CPU方式下,在下表中填入不同操作时的各控制信号的状态。 操作 读存储器 写存储器 读I/O接口 写I/O接口 IO/#M 0 0 1 1 DT/#R 0 1 0 1 #DEN 0 0 0 0 #RD 0 1 0 1 #WR 1 0 1 0 2.18 设当前数据段位于存储器的A8000H到87FFF H,DS段寄存器的内容应是什么? 解:DS段寄存器存放段基址,由当前数据段在存储器中的存储空间的起始地址可知DS的

内容为A800 H。

2.19 若CS=8000H,则当前代码段可寻址的存储空间的范围是多少? 解:由物理地址 = 段基址*16 + 段内偏移(16位)可得: CS段寄存器存放段基址(16位) 存储空间的范围是80000H ~ 8FFFF H

2.21 总线传输需要解决哪几个主要问题?

(1)总线传输同步。为使信息正确传送,防止丢失,需对总线通信进行定时,根据定时方式不同,大体可分为同步和异步两种数据传送方式。

(2)总线总裁控制。在总线上某一时刻只能有一个总线主部件控制总线,为避免多个部件同时发送信息到总线的矛盾,需要有总线仲裁机构。

(3)出错处理。数据传送过程中可能产生错误,有些接收部件有自动纠错能力,可以自动纠正错误。有些部件虽无自动纠错能力,但能发现错误,这时可发出“数据出错”信号,通知CPU来进行处理。

(4)总线驱动。在计算机系统中通常采用三态输出电路或集电极开路输出电路来驱动总线。后者速度较低,常用在I/O总线上。

3.2 设(DS)=6000H, (ES) = 2000H, (SS)=1500H, (SI) = 00A0H, (BX) = 0800H, (BP) = 1200H, 数据变量VAR为0050H。请分别指出下列各条指令源操作数的寻址方式?它的物理地址是多少?

(1) MOV AX, BX (2) MOV DL,80H (3) MOV AX, VAR (4) MOV AX,VAR[BX][SI] (5) MOV AL, ’B’ (6) MOV DI, ES:[BX] (7) MOV DX, [BP] (8) MOV BX,20H[BX] 解:(1)寄存器寻址,物理地址: (DS)<<4+(BX) = 60800H (2)立即寻址 (3)立即寻址

(4)基址-变址-相对寻址,物理地址=608F0H (5)立即寻址

(6)寄存器间接寻址,物理地址=20800H (7)寄存器间接寻址,物理地址=16200H (8)寄存器相对寻址,物理地址=60820H

3.6 指出下列指令的错误

(1) MOV AH, CX ;源操作数和目的操作数的类型不同 (2) MOV 33H, AL ;立即数不能为目的操作数

(3) MOV AX, [SI][DI] ;同一条指令中不能出现两个变址寄存器SI, DI (4) MOV [BX], [SI] ;不能用一条指令完成两个存储单元间的数据传送 (5) ADD BYTE PTR[BP], 256 ;操作数256超出8位数据(BYTE)长度

(6) MOV DATA[SI], ES:AX ; ES之后应为表示某个非ES段的偏移地址,但依此含义该指令又是用一条指令欲实现两个存储单元间的数据传送,故错误,可将”ES:”移到目的操作数前。

(7) JMP BYTE PTR[BX] ;若为段内间接转移,则指令中操作数是16位的寄存器或存储器

地址,故BYTE应改为WORD;若为段间间接转移,则指令中操作数是一个32位的存储器地址,故BYTE应改为DWORD。

(8) OUT 230H, AX ;直接寻址时输出端口为8位立即数表示;若用间接寻址,则16位端口由DX给出。

(9) MOV DS, BP ;BP一般不对应DS

(10) MUL 39H ;乘法指令MUL的操作数不能为立即数

3.15 试编写程序统计BUFFER为起始地址的连续200个单元中0的个数。

XOR BL, BL ;存放0的个数 MOV CX, 200 ;统计次数

LEA SI, BUFFER ;(SI)?BUFFER的偏移地址 CLD ;清方向标志,按增地址方向操作

NEXT: LODSB ;取一个数 OR AL, AL ;操作数自身相或,仅影响标志位 JNZ GOON ;若不为0,则跳到GOON执行 INC BL ;若为0,则个数加1 GOON: LOOP NEXT ; (CX)?(CX)-1,若CX不为0则循环 …

;注:以上仅为一种参考答案

第四章

习题1、把从MEM单元开始的100个16位无符号数从小到大的顺序排列。

与第一版P179的例4-15类似。仅排列顺序有变化。 参考程序如下: DSEG SEGMENT

MEM DW 100 DUP(?) ;假定要排序的数已存入这100个字单元中 DSEG ENDS

CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG START: MOV AX, DSEG MOV DS, AX LEA DI, MEM ;DI指向要排序的数的首址 MOV BL, 99 ;外循环只需要99次

;外循环体从此开始

NEXT1: MOV SI, DI ;SI指向当前要比较的数 MOV CL, BL ;CL为内循环计数器,循环次数每轮少1 ;以下为内循环 NEXT2: MOV AX, [SI] ;取第一个数Ni ADD SI, 2 ;指向下一个数Nj (此处加2是因为每个数据为16位,占2个存储单元) CMP AX, [SI] ;Ni>=Nj

JC NEXT3 ;若小于,则不交换 MOV DX, [SI] ;否则,交换Ni和Nj MOV [SI-2], DX MOV [SI], AX NEXT3: DEC CL ;内循环结束? JNZ NEXT2 ;若未结束,则继续 ;内循环到此结束 DEC BL ;外循环结束? JNZ NEXT1 ;若未结束,则继续 ;外循环体结束 MOV AH, 4CH ;返回DOS INT 21H CSEG ENDS END START

习题2、把存放在内存单元MBIN中的16位二进制数转换为压缩的BCD码,并存放在MBCD开始的内存单元中。

参见第一版P188例4-22,注意此处为压缩的BCD码 参考程序如下: DATA SEGMENT MBIN DW 4FB6H MBCD DB 5 DUP(?) DATA ENDS ;

CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, MBIN LEA BX, MBCD XOR DX, DX MOV CX, 0AH ;基数10 DIV CX ;(AX)…(DX)?(DX:AX)/(CX) MOV [BX], DL ;存最低位数字 MOV DL, 0 DIV CX ;此时DL表示第二位数字 MOV CL,4 SHL DL,CL ;DL逻辑左移4位 ADD [BX], DL ;左移4位后的DL与最低位数字相加,结果放在MBCD单元中 INC BX MOV DL, 0

DIV CX INC BX MOV [BX], DL MOV DL, 0 DIV CX MOV CL,4 SHL DL,CL

ADD [BX], DL

MBCD+1单元中 INC BX MOV [BX], AL MOV AH, 4CH INT 21H CODE ENDS END START

;存第三位数字

;此时DL表示第四位数字

;DL逻辑左移4位

;左移4位后的DL与第三位数字相加,结果放在

;存第五位数字 ;结束,返回DOS