2012微机原理复习题(参考答案)(1) 下载本文

STRING1 DB ‘ABCD’ STRING2 DW ‘ABCD’

五、计算题

1、将下列十进制数分别用压缩BCD码和非压缩BCD码表示 1)86

【1000 0110】【00001000 00000110】

【0010 0011. 0110 0100】【00000010 00000011. 00000110 00000100】 【1000 0000 1001. 0111】【00001000 00000000 00001001. 00000111】

【段地址:2314H,偏移地址:0032H,物理地址:23172H】 【段地址:10ADH,偏移地址:DDF6H,物理地址:1E8C6H】

2)23.64 3)809.7

STRING1

STRING2

41H 42H 43H 44H 42H 41H 44H 43H 2、写出下列逻辑地址的段地址,偏移地址和物理地址。 (1)2314H:0032H (2)10ADH:DDF6H

3、已知(DS)=3000H, (ES)=2000H, (SS)=4000H, (BX)=1000H, (BP)=2000H, (SI)=0001H,(DI)=0002,请计算下列指令中源操作数的段地址、有效地址及物理地址。 1)MOV CX,[BX] 2)MOV CX,[BP+DI]

【段地址:3000H,偏移地址:1000H,物理地址:31000H】 【段地址:4000H,偏移地址:2002H,物理地址:42002H】 【段地址:4000H,偏移地址:1000H,物理地址:41000H】 【段地址:2000H,偏移地址:1001H,物理地址:21001H】

3)MOV CX,SS:[1000H] 4)MOV CX, ES:[BX][SI]

4、设有一个具有16位地址和8位字长的存储器,试问:

(1)存储器能存储多少字节的信息?(2)如果存储器由2K x 4位的RAM芯片组成,共计需要多少片?(3)需要用哪几位高位地址作片选译码产生芯片选择信号? 【 (1)64K;(2)64片;(3)A15-A11】

5、给定一个堆栈区,地址为1240H:0000H ~ 1240H:0200H,SP=0062H,问: (1)当前栈顶地址是多少?(2)栈底地址是多少?(3)堆栈段寄存器SS=? 【 (1)12462H;(2)12600H;(3)(SS)=1240H】 6、在8086系统中,若当前SS=3500H,SP=0800H

(1)说明堆栈段段首在存储器中的物理地址PA? (2)问入栈5个字后,SP的内容是什么? (3)若再出栈3个字,SP的内容又是什么值?

【 (1)35000H;(2)07F6H;(3)07FCH】

7、已知(AX)=701FH,(BX)=13F1H,(CL)=02H。指出独立执行下列指令后目标操作数的内容和状态标志位的状态(若某状态位在指令执行后没发生改变或无效,用*代替)

SF ZF AF PF CF OF

(1)ADD AX, BX (2)SUB AH, BH (3)SHL AX, CL (5)SAR AX, CL

AX= 【8410H 1 0 1 0 0 1】 AH= 【5DH 0 0 1 0 0 0】

AX= 【C07CH 1 0 * 0 1 *】提示:P85 AX= 【1C07H 0 0 * 0 1 *】提示:P85

8、右下图所示为8086/8088中断向量表部分示意图。此时若执行INT 4指令,则程序转向何处执行(分别用逻辑地址和物理地址回答)?写出计算过程。

【INT 4中断指令的中断向量为4

9

4*4=16,故从00010H单元连续取出四个字节,前两个字节为IP的值:237BH 后两个字节为CS的值:1500H

物理地址PA=CS*10H+IP=15000H+237BH=1737BH 故程序转向1500:237BH或1737BH处执行】

9、有四片存储器芯片与CPU的连接如下图所示(参考教材P181)

存储器芯片与CPU的连接

(1)图示中RAM芯片的容量为多少?【2K×8】 (2)图示中ROM芯片的容量为多少?【4K×8】 (3)各芯片的地址范围为多少?写出推理过程 A15 A14 A13 0 0 0 0 0 0 1

10、假设要用2K×4的RAM存储芯片,组成16KB的存储容量,则:(参考习题5.21) 1) 需要多少芯片?多少芯片组?每块芯片需要多少寻址线?总共需要多少寻址线?

2) 若与8位CPU连接,试画出连接原理图(存储器芯片的有关引脚为A10 ~ A0,CE,WE,OE,D3 ~ D0;CPU 的有

关信号有A13 ~ A0,WR,RD,D7 ~ D0)。 3) 连接好后,写出各组芯片的地址分配情况。

10

A12 0 0 1 1 0 A11 0 1 0 1 0 A10-A0 全0到全1 全0到全1 全0到全1 全0到全1 全0到全1 译码器输出 选中芯片 地址范围 A15 IO/M A14 A13 A12 A11 A10~A0 1 G1 G2A G2B C B A Y4 Y3 Y2 Y1 Y0 & A10~A0 CPU A11 ROM CE A10~A0 CE WE A10~A0 CE CE A10~A0 WE RAM2 OE D7~D0 RAM1 OE D7~D0 WE RAM3 OE D7~D0 OE D7~D0 D7~D0 WR RD Y0 ROM 0000H-0FFFH Y1 Y2 RAM1 RAM2 RAM3 1000H-17FFH 1800H-1FFFH 2000H-27FFH Y3 Y4

【1、需要16片芯片,8个芯片组,每块芯片需要11根寻址线,总共需要14根寻址线】 图略 地址范围

第一组:0000H-07FFH;第二组:0800H-0FFFH;第三组:1000H-17FFH;第四组:1800H-1FFFH 第五组:2000H-27FFH;第六组:2800H-2FFFH;第七组:3000H-37FFH;第八组:3800H-3FFFH

11、令PC及存储器地地址区有关单元的内容如下: (20H)=3CH,(21H)=00H,(22H)=86H,(23H)=0EH

且CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H这时执行INT 8指令,请问: 1) 程序转向何处执行(用物理地址回答)?

2) 栈顶6个存储器单元的地址(用逻辑地址回答)及内容分别是什么? 【IP=003CH CS=0E86H PA=0E89CH】 1000H: 00FAH 0010H 1000H: 00FCH 2000H 1000H: 00FEH 0240H 六、编程设计题

1、在da1单元和da2单元起各有2个字节的无符号数,编写一个完整的程序,分别实现这两个无符号数的加法以及减法运算,并将结果分别存放到das和dad开始的存储单元中去(不保存加减运算可能产生的进位和借位)【参考教材P146】

2、编写一个完整的程序计算100以内的奇数累加和(1+3+5+……+99),并将计算结果存放到字存储单元SUM中。【参考教材P126】

3、统计AX寄存器中二进制位为1的个数,并将统计结果存放于字节变量result中。【提示:循环16次,每次循环将AX内容逻辑右移1次,移出的值在CF中,再用ADC DL,0语句累加CF,结果保存在DL中】

4、在dbuf单元中有10个有符号字节数,试编写一个完整的程序,实现统计dbuf数据区中正数、负数和零的个数,并分别存放于字节变量d1和d2和d3中。 【提示:】 CON1:

…… ADD AL, 0 JZ LING JNS ZHENGSHU

; 累加负数个数 ; 累加正数个数 ; 累加零的个数 ; 循环

JMP NEXT JMP NEXT

FUSHU: …… ZHENGSHU: ……

LING: ……

NEXT: …… ; 调整指针

LOOP CON1

……

5、编程一个完整的程序计算(A×B+C-70)/A,计算结果的商和余数分别存放在变量D和E中,其中A、B、C、D、E均为有符号数、字节变量。【参考习题4.12 】 【提示:】

(1)、若A、B均为字节,相乘之后的结果为字,此时再和字节变量C相加,需要考虑到将C从字节扩展到字(符号位扩展到高8位,可使用指令CBW) (2)、有符号数的乘除用IMUL和IDIV

MOV AL, A MOV BL, B IMUL BL

;AL←A ;BL←B ;A×B

11

MOV BX, AX MOV AL, C CBW ……

;AX←C ;A×B+C

ADD AX, BX

;暂存到BX

6、设计一个程序段,将AX和BX中的8位BCD数加CX和DX中的8位BCD数(AX和CX是最高有效寄存器),加法以后的结果必须存入数据段3000H开始的四个单元中(参考习题3.69) 如:AX||BX的内容是:12345656H(对应的十进制就是12345656)

CX||DX的内容是:78549910H(对应的十进制就是78549910)

则,加法的结果是90895566 3000H单元的内容为66h 3001H单元的内容为55h 3002H单元的内容为89h 3003H单元的内容为90h

【提示:】此题是多字节加法题,但每次加法结束后需要采用DAA调整。加法的十进制调整指令DAA,只能调整AL中的内容,所以,每次的ADD或ADC加法,只能采用8位加法。

7、用串操作指令设计实现如下功能的程序段:先将100个数从6180H处移到2000H处,再从中检索出等于AL中字符的单元,并将此单元值换成空格符(设AL中的字符是’&’,且100个数中可能有多个’&’)。【参考习题3.79】

12