(暂停更新)
红色的是答案
目录
检测点 1.1
(1) 13
如果一个 cpu 有 n 根地址线,则可以说这个 cpu 的地址总线的宽度为 n ,而一根导线可以传送的稳定状态只有两种:高电平和低电平( 1 和 0 ),所以 n 根导线只可以传送 n 位二进制数据。n 位二进制数据可以表示 2 的 n 次方个不同的数,所以有 n 根地址线的 cpu 最多可以寻找 2 的 n 次方个 内存单元。
题目中说这个 cpu 的寻址能力是 8 KB,也就是说它的寻址能力是 8 * 1024 Byte,等于 2 ^ 13 Byte,所以它的地址线有 13 根,也就是说它地址总线的宽度位 13 。
(2) 1024、0、1023 和 (3) 8*1024、1024
电子计算机的最小信息单位是 bit(比特) ,也就是一个二进制位。微型机存储器的存储单元可以存储一个 Byte ,也就是 8 个 bit 。
题目中说1 KB 的存储器,也就是 1024 Byte 的存储器,那自然就可以存储 1024 个 Byte,也就是 8 * 1024 个bit;一个存储单元可以存储一个 Byte ,那1024 Byte 的存储器自然有 1024 个存储单元。编号从 0 开始,和C语言是一样的,所以答案是 从 0 到 1023。
(4) 1024^3、1024^2、1024
进制转换,不会的自己查表
(5)2^6、1、2^4、4
通过题(1)我们可以知道,如果一个 cpu 有 n 根地址线,则可以说这个 cpu 的地址总线的宽度为 n ,而一根导线可以传送的稳定状态只有两种:高电平和低电平( 1 和 0 ),所以 n 根导线只可以传送 n 位二进制数据。n 位二进制数据可以表示 2 的 n 次方个不同的数,所以有 n 根地址线的 cpu 最多可以寻找 2 的 n 次方个 内存单元。
题目中说 地址总线宽度是 16 根,那么它的寻址能力就应该是 2^16 Byte ,同理可得剩下其他的,做一下进制转换就 OK 了。
(6) 1、1、2、2、4
8 根数据总线一次可以传送 一个 8 位二进制数据,一根线传送一位数嘛~~~,也就是说 8 根数据总线一次可以传送 1 个字节(Byte),16根那就是 2 个字节.
题目告诉了数据总线的宽度有几根(8/16),知道如上的基础知识,答案简简单单就出来了。
(7) 512、256
通过第七题可以知道 8086 一次传输的数据是 2 Byte ,80386 是 4 Byte,所以用 1024 分别除以 2 和 4 就可以得到答案。
(8) 二进制
记住就好哦~
检测点 2.1
(1)
首先需要注意的就是al和ah这种都是作为一个独立的8位寄存器来使用的,cpu再执行指令的时候认为al和ah,两者之间没有关系。
其次需要注意像倒数第二个 add al,al 的情况,此时88H+88H的结果是110H,但是al作为8位寄存器,只能存放两位十六进制的数据,所以最高位的 1 会丢失,只留下 10H。
十六进制计算可以使用这个在线工具:十六进制计算器 | 十六进制数字系统 (purecalculators.com)
mov ax,62627 AX=F4A3H
mov ah,31H AX=31A3H
mov al,23H AX=3123H
add ax,ax AX=6246H
mov bx,826CH BX=826CH
mov cx,ax CX=6246H
mov ax,bx AX=826CH
add ax,bx AX=04D8H
mov al,bh AX=0482H
mov ah,bl AX=6C82H
add ah,ah AX=D882H
add al,6 AX=D888H
add al,al AX=D810H
mov ax,cx AX=6246H
(2)答案如下↓(装作是红色的吧)
mov ax,2H
add ax,ax
add ax,ax
add ax,ax
第一行:ax等于2
第二行:ax等于2+2=4
第三行:ax等于4+4=8
第四行:ax等于8+8=16
检测点 2.2
(1)0010H到1000fH
物理地址 = 段地址 * 16 + 偏移地址
偏移地址16位,变化范围为0~FFFFH(出处 王爽汇编第四版 p25的结论)
物理地址的范围是
最小是偏移地址为0,最大是偏移地址为FFFFH
所以答案为0010H到1000fH
(2)
因为:物理地址 = 段地址 * 16 + 偏移地址
逐步推导:段地址 * 16 = 物理地址 - 偏移地址
段地址 = (物理地址 - 偏移地址)/ 16
代入数据:段地址 = (20000H - 偏移地址)/ 16
因为偏移地址的范围是:0~FFFFH
所以想要 SA(段地址)最大,就要让偏移地址最小,
即:当偏移地址为0时,SA = 20000H / 16 = 2000H
同理可知:当偏移地址为FFFFH时,SA = 20000H / 16 - FFFFH / 16 = 2000H - FFFH = 1001H
检测点 2.3
4次; 第一句语句读取后、第二句语句读取后、第三句语句读取后、第三句语句执行后;0000H
SUB (subtract) 指令:
SUB dst,src 结果是 (dst) = (dst)-(src)
有关 jmp 的内容移步王爽汇编第四版 p32
由于 8086cpu CS,IP不支持用 MOV 指令来改变他们的值,因此引入 JMP 指令。
jmp ax 在语法上(注意是在语法上)相当于 mov IP,ax
注意 IP 的值每读取一条指令会自动增加
mov ax,bx : 将 bx 的值赋给 ax;
sub ax,ax : 将 ax(前)的值减去 ax(后)的值 , 并保存在 ax 中
jmp ax : 将ax的值赋给ip(指令指针)寄存器
所以上述每一条语句读取后都会修改一次 IP ,而在执行 jmp ax 语句的时候 IP 也会变化,(毕竟这就是这个语句的作用和存在的意义),三次读取后加上一次执行,IP 总共被修改了 4 次。
因为 jmp ax 所以 IP最后的值 就是 ax 的值
又因为 sub ax,ax 使 ax 变成了0000H,
所以最后ip的值为0000H