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

本题参考

posted on 2022-03-24 18:01  愤怒的苹果ext  阅读(258)  评论(0编辑  收藏  举报

导航