微机答案(全) 下载本文

MOV CX,3 ;最多不超过3为十进制数(255)

LEA DI, ANSWER ;DI指向结果存放单元 o XOR AX,AX

MOV AL,BUFFER ;取要转换的二进制数 c MOV BL,0AH ;基数10

AGAIN:DIV BL ;用除10取余的方法转换 . ADD AH,30H ;十进制数转换成ASCII码 MOV [DI], AH ;保存当前的结果 INC DI ;指向下一个位保存单元 w AND AL,AL ;商为0?(转换结束?) JZ STO ;若结束,退出 a MOV AH,0

LOOP AGAIN ;否则循环继续 STO: MOV AX,4C00H d INT 21H ;返回DOS CSEG ENDS h

END START

4.6 假设数据项定义如下: k DATA1 DB ‘HELLO!GOOD MORNING!’ DATA2 DB 20 DUP(?) .

用串操作指令编写程序段,使其分别完成以下功能:

(1)从左到右将DATA1中的字符串传送到DATA2中。 (2)传送完后,比较DATA1和DATA2中的内容是否相同。 (3)把DATA1中的第3和第4个字节装入AX。 (4)将AX的内容存入DATA2+5开始的字节单元中。

解:w (1)

MOV AX,SEG DATA1 MOV DS,AX

MOV AX,SEG DATA2 MOV ES,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD

REP MOVSB

(2)LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD

REPE CMPSB 。。。

(3) LEA SI,DATA1 ADD SI,2

LODSW

(4)LEA DI,DATA2 c ADD DI,5

STOSW .

4.7执行下列指令后,AX寄存器的内容是多少? TABLE DW 10,20,30,40,50 ENTRY DW 3 w

MOV BX,OFFSET TABLE ADD BX,ENTRY d MOV AX,[BX] 解:(AX)=1E00H h

4.8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。 解:首先确定STRING1中字符串的长度,因为字符串的定义要求以‘$’符号结尾, 可通过检测‘$’符确定出字符串的长度,设串长度为COUNT,则程序如下: LEA SI,STRING1 . LEA DI,STRING2 ADD SI,COUNT-20 MOV CX,20 w CLD

REP MOVSB

4.9 假设一个48位数存放在DX:AX:BX中,试编写程序段,将该48位数乘以2.

解: 可使用移位指令来实现。首先将BX内容逻辑左移一位,其最高位移入进位位CF,之后AX内容带进位位循环左移,使AX的最高位移入CF,而原CF中的内容(即BX的最高位)移入AX的最低位,最后再将DX内容带进位位循环左移一位,从而实现AX的最低位移入DX的最低位。 SHL BX,1 RCL AX,1

RCL DX,1

4.10 试编写程序,比较AX,BX,CX中带符号数的大小,并将最大的数放在AX中。 解:比较带符号数的大小可使用符号数比较指令JG等。 CMP AX,BX JG NEXT1

XCHG AX,BX NEXT1:CMP AX,CX JG STO

MOV AX,CX STO:HLT

4.11 若接口03F8H的第1位(b1)和第3位(B3)同时为1,表示接口03FBH有准备好的8位数据,当CPU将数据取走后,b1和b3就不再同时为1了。仅当又有数据准备好时才再同时为1。试编写程序,从上述接口读入200字节的数据,并顺序放在DATA开始的地址中。 m解:即当从输入接口03F8H读入的数据满足ⅹⅹⅹⅹ1ⅹ1ⅹB时可以从接口03FBH输入数据。

LEA SI,DATA MOV CX,200

NEXT: MOV DX,03F8H

WAIT: IN AL,DX

AND AL,0AH ;判断b1和b3位是否同时为1 . CMP AL,0AH

JNZ WAIT ;b1和b3位同时为1则读数据,否则等待 MOV DX,03FBH IN AL,DX MOV [SI],AL INC SI LOOP NEXT

HLT

4.12 画图说明下列语句分配的存储空间及初始化的数据值。 (1)DATA1 DB ‘BYTE’,12,12H,2 DUP(0,?,3) (2)DATA2 DW 4 DUP(0,1,2),?,-5,256H 解: (1) 存储空间分配情况如图(a)所示。 (2) 存储空间分配情况如图(b)所示。 第5章 存储器系统

5.1 内部存储器主要分为哪两类? 它们的主要区别是什么? 解: (1)分为ROM 和 RAM 。 (2)它们之间的主要区别是:

。ROM在正常工作时只能读出,不能写入。RAM则可读可写。 。断电后,ROM中的内容不会丢失,RAM中的内容会丢失。 5.2 为什么动态RAM需要定时刷新?

解:DRAM的存储元以电容来存储信息,由于存在漏电现象,电容中存储的电荷会逐渐泄漏,从而使信息丢失或出现错误。因此需要对这些电容定时进行“刷新”。 5.3 CPU寻址内存的能力最基本的因素取决于___________。

解:地址总线的宽度。

5.4 试利用全地址译码将6264芯片接到8088系统总线上,使其所占地址范围为32000H~33FFFH。

解:将地址范围展开成二进制形式如下图所示。

0011 0010 0000 0000 0000 0011 0011 1111 1111 1111

6264芯片的容量为8×8KB,需要13根地址线A0~A12。而剩下的高7位地址应参加该芯片的地址译码。电路如图所示:

5.5 内存地址从20000H~8BFFFH共有多少字节?

解:共有8BFFFH-20000H+1=6C000H个字节。或432KB。

5.6 若采用6264芯片构成上述的内存空间,需要多少片6264芯片?

解:每个6264芯片的容量位8KB,故需432/8=54片。

5.7 设某微型机的内存RAM区的容量位128KB,若用2164芯片构成这样的存储器,需多少2164芯片? m至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码?

解: (1)每个2164芯片的容量为64K×1bit,共需128/64×8=16片。

(2)128KB容量需要地址线17根。 c

(3)16根用于片内寻址。 (4)1根用于片选译码。 .

注意,用于片内寻址的16根地址线要通过二选一多路器连到2164芯片,因为2164芯片是DRAM,高位地址与低位地址是分时传送的。

5.8 现有两片6116芯片,所占地址范围为61000H~61FFFH,试将它们连接到8088系统中。并编写测试程序,向所有单元输入一个数据,然后再读出与之比较 ,若出错则显示“Wrong!“,全部正确则显示”OK!“。 a 解:连接如下图所示。测试程序段如下: OK DB ‘OK!’,$

WRONG DB ‘Wrong!’,$ d ?

MOV AX, 6100H h MOV ES, AX MOV DI, 0 k MOV CX, 1000H MOV AL, 55H . REP STOSB MOV DI, 0 MOV CX, 1000H REPZ SCASB JZ DISP_OK LEA DX, WRONG MOV AH, 9 INT 21H HLT

DISP_OK: LEA DX, OK MOV AH, 9 INT 21H

HLT

5.9 甚什么是字扩展?什么是位扩展?用户自己购买内存条进行内存扩充,是在进行何种存储器扩展? 解:

(1)当存储芯片的容量小于所需内存容量时,需要用多个芯片构成满足容量要求的存储器,这就是字扩展。

(2)当存储芯片每个单元的字长小于所需内存单元字长时,需要用多个芯片构成满足字长要求的存储模块,这就是位扩展。

(3)用户在市场上购买内存条进行内存扩充,所做的是字扩展的工作。

5.10 74LS138译码器的接线图如教材第245页的图5-47所示,试判断其输出端Y0#、Y3#、Y5#和Y7#所决定的内存地址范围。

解:因为是部分地址译码(A17不参加译码),故每个译码输出对应2个地址范围:

Y0#:00000H ~ 01FFFH 和 20000H ~ 21FFFH Y3#:06000H ~ 07FFFH 和 26000H ~ 27FFFH Y5#:0A000H ~ 0BFFFH 和 2A000H ~ 2BFFFH Y7#: