X86汇编语言从实模式到保护模式练习题
目录
第1章
检测点1.1
- 将下列二进制数转换成十进制数。
1101、1111、1001110、11111111、10000000、1101101100011011
- 解题思路
按照书中“权”的概念, 每个数位都有一个不同的放大倍数。
- 以
1101
为例
1101 B = 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 13 D 1101B = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 13D 1101B=1×23+1×22+0×21+1×20=13D - 后面的也是这样计算,最后结果,依次是。
13 15 78 255 128 56091
第2章
练习题
1、在段与段之间互不重叠的前提下,1MB 内存可以完整地划分为多少个 16KB 的段?
分析
1MB
(转为KB是1024KB
)的内存,每段长64KB
,最多只能划分成16
个段。计算公式如下。
1024 K B ÷ 64 K B = 16 1024KB \div 64KB = 16 1024KB÷64KB=16
答案
- 那么这里是16KB。
1024 K B ÷ 16 K B = 64 1024KB \div 16KB = 64 1024KB÷16KB=64 - 结果就是
64
个段。
2、数据段寄存器 DS 的值为 25BCH 时,计算 Intel 8086 可以访问的物理地址范围。
分析
- 8086 是 16 位的 CPU,所以,共计
65535
个字节,偏移地址的范围为0000H ~ FFFFH
。 所能访问的范围即为:25BCH:0000H ~ 25BCH:FFFFH
。
答案
- 转为20位物理地址,公式:
段 地 址 × 16 + 偏 移 地 址 段地址 \times 16 + 偏移地址 段地址×16+偏移地址 - 16转为十六进制就是
10H
,段地址 * 16
,结果向左偏移1位,也就是往后加个0.
25 B C H × 16 + 0000 H = 25 B C 0 H 25BCH \times 16 + 0000H = 25BC0H 25BCH×16+0000H=25BC0H
25 B C H × 16 + F F F F H = 35 B B F H 25BCH \times 16 + FFFFH= 35BBFH 25BCH×16+FFFFH=35BBFH
- 所以最后结果是
25BC0H ~ 35BBFH
。