编辑: 烂衣小孩 | 2019-12-24 |
第一章 习题
1 什么是冯・诺依曼机? 答: 冯・诺依曼在
1946 年提出了一个完整的现代计算机的结构雏型,它由
5 个部分组成, 即运算器、控制器、存储器、输入设备和输出设备.
运算器负责指令的执行;
控制器的作用 是协调并控制计算机的各个部件按程序中排好的指令序列执行;
存储器是具有记忆功能的器 件, 用于存放程序和需要用到的数据及运算结果;
而输入/输出设备则是负责从外部设备输 入程序和数据,并将运算的结果送出.
9 将下列二进制数转换为十进制数. (1) 1101.01 (2) 111001.0011 (3) 101011.0101 (4) 111.0001 解: (1) 13.25 (2) 57.1875 (3) 43.3125 (4) 7.0625
10 将下列十六进制数转换为十进制数. (1) A3.3H (2) 129.CH (3) AC.DCH (4) FAB.3H 解: (1) 163.1875 (2) 297.75 (3) 172.859375 (4) 4011.1875
14 将下列二进制数转换为有符号十进制数. (1)
10000000 (2)
00110011 (3)
10010010 (4)
10001001 解: (1) -0 (2)
51 (3) -18 (4) -9
15 将下列十进制数转换为单精度浮点数. (1) +1.5 (2) -10.625 (3) +100.25 (4) -1200 解: (1)
0 01111111
10000000000000000000000 (2)
1 10000010
01010100000000000000000 (3)
0 10000101
10010001000000000000000 (4)
1 10001001
00101100000000000000000
第二章习题及答案(科大) 必做习题:1,5,9,11,12,14,16,18,20 参考答案:
1 答:CPU 内部由执行单元 EU 和总线接口单元 BIU 组成.主要功能为:执行单元 EU 负责执行指令.它由算术逻辑单元(ALU)、通用寄存器组、16 位标志寄存器(FLAGS)、EU 控制电路等组成.EU 在工作时直接从指令流队列中取指令代码,对其译码后产生完成指令 所需要的控制信息.数据在 ALU 中进行运算,运算结果的特征保留在标志寄存器 FLAGS 中. 总线接口单元 BIU 负责 CPU 与存储器和 I/O 接口之间的信息传送.它由段寄存器、 指令指针寄存器、指令流队列、地址加法器以及总线控制逻辑组成.8086 的指令队列长度 为6B.
5 答: (1)ZF,两数相减如 ZF=1,则相等 (2)SF,SF=1 为负 (3)对有符号数:OF,OF=1 为溢出;
对无符号数:CF,CF=1 为溢出 (4)PF,PF=1,不补
1 (5)对有符号数:无溢出时(OF=0) ,如ZF=1,则两数相等;
如ZF=0 且SF=0,则被 减数大;
如ZF=0 且SF=1,则减数大;
有溢出时(OF=1) ,如SF=1,则被减数大;
如SF=0,则减数大;
对无符号数:如ZF=1,则两数相等;
如CF=0,则被减数大;
如CF=1,则减数大 (6)IF,IF=1,允许中断
9 答: (1)10000H~1FFFFH (2)12340H~2233FH (3)23000H~32FFFH (4)E0000H~EFFFFH (5)AB000H~BAFFFH
11 答: (1)12000H (2)26200H (3)A1000H (4)2CA00H
12 答:物理地址:35000H~35800H.入栈
10 个字节后 SP 为7F6H.再出栈
6 个字节 后SP 为7FCH.
14 答:代码段首地址:31FF0H;
当前指令地址:320F0H 数据段首地址:10E400H 堆栈段栈首地址:21F00H;
堆栈段栈顶地址:31EEEH 附加段首地址:10F40H 状态标志均为 0.
16 答:因为
8086 的地址和数据引脚分时复用,要保证稳定输出地址信号,必须使用地 址锁存器. 使用三片 8282,其中OE 接地,STB 与CPU 的ALE 相连;
前2片8282 的DI0~DI7 分 别与 CPU 的AD0~AD15 相连,第三片
8282 的DI0~DI3 分别与 CPU 的AD16~AD19 相连,DI4 与CPU 的HBE 相连.
18 答:CPU 完成一次存储器访问或 I/O 端口操作所需要的时间称为一个总线周期. 在T2~T4 时钟周期内数据出现在总线上.
20 答:FFFF0H 2,3,6,10,11,12,13,15,17,18 2. DS=1000H,BX=0200H,SI=2,内存 10200H-10205H 单元的内容分别是 10H, 2AH, 3CH, 46H, 59H, 6BH 下列指令执行后,AX=? (1)MOV AX,0200H (2) MOV AX,[200H] (3)MOV AX,BX (4) MOV AX,3[BX] (5)MOV AX,[BX+SI] (6) MOV AX,2[BX+SI] 答:(1)0200H, (2)2A10H (3)0200H (4)5946H (5)463CH (6)6B59H 3.DS=1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H,数据段中变 量名为 VAL 的偏移地址值为 0030H,说明下列源操作数的寻址方式和物理地址? (1)MOV AX,[100H] (2) MOV AX,VAL (3)MOV AX,[BX] (4) MOV AX,ES:[BX] (5)MOV AX,[SI] (6) MOV AX,[BX+10H] (7)MOV AX,[BP] (8) MOV AX,VAL[BP][SI] (9)MOV AX,VAL[BX][DI] (10) MOV AX,[BP][DI] 答:(1)直接,10100H (2)直接,10030H (3)寄存器间接,10100H (4)寄存器间接,20100H (5)寄存器间接,100A0H (6)寄存器相对,10110H (7)寄存器间接,35200H (8)相对基址变址,352D0H (9)相对基址变址,10154H (10)基址变址,35224H 6.指出下列指令哪些是错误的,错在哪里 (1) MOV DL,AX (2) MOV 8650H,AX (3) MOV DS,0200H (4) MOV [BX],[1200H] (5) MOV IP,0FFH (6) MOV [BX+SI+3],IP (7) MOV AX,[BX][BP] (8) MOV AL,ES:[BP] (9) MOV DL,[SI][DI] (10) MOV AX,OFFSET 0A20H (11) MOV AL,OFFSET TABLE (12)XCHG AL,50H (13) IN BL,05H (14) OUT AL,0FFEH 答: (1)长度不匹配 (2)立即数不能做目的操作数 (3)段寄存器不能用立即数赋值 (4)不能两个内存 (5)IP 不能用指令直接修改 (6)指令中不能出现 IP (7)BX/BP 应与 SI/DI 搭配 (8)对(9)SI/DI 应与 BX/BP 搭配 (10)OFFSET 后应该内存 (11)应用 AX (12)不能立即数 (13)IN 必须用 AL/AX (14)操作数反;
地址应为
8 位10. 某班有
7 个同学英语成绩低于
80 分, 分数存在字节类型 ARRAY 数组中, 编程完成: (1) 给每人加
5 分,结果存到 NEW 数组中 (2)把加分后的总分存到字类型 SUM 单元中 (3)把加分后的平均分存到字节类型 AVERAGE 单元中 答: ARRAY DB 79,78,77,76,77,78,79 NEW DB
7 DUP(?) SUM DW
1 DUP(?) AVERAGE DB
1 DUP(?) MOV DS, AX MOV ES, AX LEA SI,ARRAY LEA DI,NEW MOV CX,7 CLD REP MOVSB MOV CX,7 MOV AX,0 LEA SI,NEW ADD5: ADD BYTE PTR[SI],5 ADD AL,[SI] ADC AH,0 INC SI LOOP ADD5 MOV SUM,AX MOV BL,7 DIV BL MOV AVERAGE,AL 11.AX=2508H,BX=0F36H,CX=0004H,DX=1864H,下列指令执行后结果是多少,标志位 CF=? (1) AND AH,CL (2) OR BL,30H (3) NOT AX (4) XOR CX,0FFF0H (5) TEST DH,0FH (6) CMP CX,00H (7) SHRDX,CL (8) SARAL,1 (9) SHLBH,CL (10) SALAX,1 (11) RCLBX,1 (12) ROR DX,CL 答:(1)AX=0408H,CF=0 (2)BX=0F36H,CF=0 (3)AX=0DAF7H,CF 不变 (4)CX=0FFF4H,CF=0 (5) DX=01864H,CF=0 (6)CX=0004H,CF=0 (7)DX=0186H,CF=0 (8)AX=2504H,CF=0 (9)BX=0F036H,CF=0 (10)AX=4A10H,CF=0 (11)BX=1E6C/1E6DH,CF=0 (12)DX=4186H,CF=0 12.数据段定义如下: DATA SEGMENT STRING DB '
The Personal Computer&
TV'
DATA ENDS 用字符串操作等指令完成以下功能: (1) 把该字符串传送到附加段中偏移量为 GET_CHAR 开始的内存单元中 (2) 比较该字符串是否与'
The computer'
相同,若相同则将 AL 寄存器的内容置 1, 否则置 0,并将比较次数送到 BL 寄存器 (3) 检查该字符串是否有'
&
'
符,若有则用空格符替换 (4) 把大写字母传送到附加段中以 CAPS 开始的单元中, 其余字符传送到以 CHART 开始的单元,然后将数据段中存储上述字符串的单元清零. 答:(1) CLD LEASI,STRING LEADI,GET_CHAR MOV CX,26 REP MOVSB (2) 补充在附加数据段定义 STRING1 DB '
The computer'
MOV AL,1 CLD LEASI,STRING LEADI,STRING1 MOV CX,12 REPZ CMPSB JCXZ SKIP MOV AL,0 SKIP: MOV BX,12 SUBBX,CX (3) CLD MOV AL,'
&
'
LEA DI,STRING MOV CX,26 NEXT: REPNE SCASB JCXZ SKIP MOV BYTE PTR [DI-1],'
'
LOOP NEXT SKIP: (4) LEASI,STRING LEADI,CAPS LEABX,CHART MOV CX,26 NEXT: MOV AL, [SI] CMP AL,'
A'
JB OTHER CMP AL,'
Z'
JA OTHER MOV ES:[DI],AL INC DI JMP SKIP OTHER: MOV ES:[BX],AL INC BX SKIP: MOV BYTE PTR[SI],0 INC SI LOOP NEXT 13. 编程将 AX 寄存器的内容以相反的次序传送到 DX 寄存器中,并要求 AX 中的内容不被 破坏,然后统计 DX 寄存器中'
1'
的个数 答: MOV BL,0 PUSH AX MOV DX,0 MOV CX,16 NEXT: SHLAX,1 JNC SKIP INC BL SKIP:RCR DX,1 LOOP NEXT STOP:POP AX 15.在下列程序段中分别填入以下指令 (1)LOOP NEXT (2) LOOPE NEXT (3) LOOPNENEXT 程序执行完后,AX,BX,CX,DX 的内容分别是多少? START: MOV AX,01H MOV BX,02H MOV CX,04H MOV DX,03H NEXT: INC AX ADD BX,AX SHR DX,1 ( ) 答:(1) AX=5 BX=16 CX=0 DX=0 (2) AX=2 BX=4 CX=3 DX=1 (3) AX=3 BX=7 CX=2 DX=0 17.类型
2 的中断服务程序的起始地址为 0485:0016H,它在中断向量表中如何存放? 答: 物理地址 内容 00008H 16H 00009H 00H 0000AH 85H 0000BH 04H 18. 中断向量表中地址为 0040H 中存放 240BH,0042H 单元存放 D169H,问: (1) 这些单元对应的中断类型是什么? (2) 该中断服务程序的起始地址是什么? 答: (1)10H (2)D169H:240BH
第四章习题参考答案 教材上的习题 P205
1 解:A1 -
4 字节,A2 -
6 字节,A3 -
40 字节,A4 -
60 字节 P205
4 解:PAR 偏移地址为 0, PLENTH 当前偏移地址$=2+16+4=22, $-PAR=22,故PLENTH 的值为
22 P205
5 解:AX=1,BX=20,CX=1 P206
6 解: 应讨论最高位为
1 和0的情况.如输入最高位为 1,AH=0;
输入最高位为 0,AH=0FFH. IN AL,5FH ;
假如输入后 AL=45H TEST AL,80H ;
执行
01000101 AND
10000000 后ZF=1,AL=00H JZ L1 ;
ZF=1,转到 L1 MOV AH,0 JMP STOP L1: MOV AH,0FFH ;
结果 AH=0FFH STOP: HALT 补充题 阅读程序并完成填空 (1) ADDR1 开始的单元中连续存放两个双字数据,求其和,并将和存放在 ADDR2 开始 的单元(假定和不超过双字) MOV CX,2 XOR BX,BX CLC NEXT: MOV AX,[ADDR1+BX] ADC AX, MOV [ADDR2+BX],AX INC BX NEXT 解: [ADDR1+BX+4] INC BX LOOP (2) 在数据段 ADDR1 地址处有
200 个字节数据,要传送到数据段地址 ADDR2 处. MOV AX, SEG ADDR1 MOV DS, AX MOV ES, MOV SI, MOV DI, OFFSET ADDR2 MOV ,200 CLD REP 解: AX OFFSET ADDR1 CX MOVSB (3)已知有某字串 BUF1 的首地址为 2000H, 数据段与附加段重合.欲从 BUF1 处开始将
20 个字数据顺序传送至 BUF2 处. (假设 BUF1 和BUF2 有地址重叠) LEA SI, BUF1 ADD SI, LEA DI, BUF2 STD MOV CX, REP MOVSW 解:
38 ADD DI,
38 20 (4)设有一个首地址为 ARRAY,有N个字数据的数组,要求求出该数组之和,并把结果 存入 TOTAL 地址中.(假设和不超过两个字节) MOV CX, MOV AX,0 MOV SI,0 START: ADD AX, ADD SI,
2 DEC CX JNZ START MOV ,AX 解: N ARRAY[SI] TOTAL (5)将段地址为 1000H、偏移地址为 STR 的5个字节的内容逐一装入累加器中,加1后, 再送入 STR 为首地址的存储单元. MOV AX, 1000H MOV ES, AX MOV DS, AX MOV DI, SI MOV CX,5 CLD NEXT: LODSB ADD AL,
1 LOOP NEXT 解: LEA SI, STR STOSB (6)下列子程序统计字符串的长度,入口参数 DI 为字符串首地址,字符串以 0DH 结束;
返回参数 CX 中为统计得到的字符串长度. STRLEN PROC PUSH AX PUSH DI MOV CX,0 REPEAT: MOV AL,[DI] JE EXIT INC DI EXIT: POP DI RET STRLEN ENDP 解: CMP AL, 0DH INC CX JMP REPEAT POP AX 必做:
1、
2、
3、
5、
9、12 1. 静态 RAM 内存储的信息只要电源存在就能一直保持,而动态 RAM 的信息需要定时刷 新才能保持;
同时静态 RAM 的集成度比较低,运行速度快,而动态 RAM 的集成度高, 运行相对较慢. 2. ROM 是只读存储器, 根据写入方式的不同可以分为四类: 掩膜型 ROM、 PROM、 EPROM 和EEPROM. PROM 是可编程只读存储器,只允许编程一次,价格与生产批量无关,造价比较高;
EPROM 为可擦除可编程 ROM,能够通过特殊方式对它进行编程;
EEPROM 为电可擦除可编程 ROM,能够通过一定的通电方式对内容进行擦除并写入新 的信息. 3. CAS#为列地址选通信号, 用于指示地址总线上的有效数据为列地址;
RAS#为行地址选 通信号,用于指示地址总线上的有效数据为列地址. 5. 直接映象 Cache 是将主存储器中每一页大小分成和 Cache 存储器大小一致, Cache 中每一块分配一个索引字段以确定字段,这样可以通过一次地址比较即可确定是否命 中,但如果频繁访问不同页号主存储器时需要做频繁的转换,降低系统性能;
成组相联 Cache 内部有多组直接映象的 Cache, 组间采用全关联结构, 并行地起着高速缓存的 作用.访问时需要进行两次比较才能确定是否命中. 9. 组成 4K*8 的存储器,那么需要
4 片这样的芯片:将A15 取反后分配芯片
1 的CS#;
将A14 取反后分配给芯片
2 的CS#;
将A13 取反后分配芯片
3 的CS#;
将A12 取反 后分配给芯片
4 的CS#.那么芯片
1 的地址范围可以是(0x8000~0x83FF) 、 (0x8400~0x87FF) 、 (0x8800~0x8BFF) 、 (0x8C00~0x8FFF) 、…、 (0xF400~0xF7FF) 、 (0xF800~0xFBFF) 、 (0xFC00~0xFFFF) ,芯片
2 的地址范围可以是(0x4000~0x43FF) 、 (0x4400~0x47FF) 、 (0x4800~0x4BFF) 、 (0x4C00~0x4FFF) 、…、 (0xF400~0xF7FF) 、 (0xF800~0xFBFF) 、 (0xFC00~0xFFFF) ,这样会造成地址的重复 12. 因为 EPROM2764 是8K*8 的ROM,所以要构成 64K*8 的存储器系统,需要
8 片EPROM2764.其中 CPU 的A12~A0 直接与
8 片EPROM 的A12~A0 相连(没有考虑驱 动能力问题) ,A
15、A14 和A13 与138 的A、B、C ........