微程序控制CPU设计详解
1. 无符号除法
1.1 无符号除法原理
在无符号除法操作中,若商太大而无法正确存储在CPU寄存器中,就会发生除法溢出中断,此时除法操作将被中止。由于被除数和除数都是无符号整数,检测溢出条件相对容易。假设 DX 和 AX 寄存器为4位长,在无符号除法操作开始前, DX:AX 包含8位被除数,除数 D 位于4位寄存器或内存中。
首先,将除数与 DX (包含被除数的前4位)进行比较。若没有借位,则表示发生无符号除法溢出,因为商需要5位来存储。例如,除数为零就会产生溢出。若未发生溢出,则迭代4次,最终 DX 中得到余数, AX 中得到商。
在每次迭代中,无符号乘法是执行一系列加法和逻辑右移操作,而无符号除法则是执行一系列逻辑左移和减法操作。每次移位后,计算引擎会将 DX 与除数进行比较,仅当 DX 中的部分被除数大于或等于除数时,才会执行减法操作。
1.2 4位无符号除法示例
以 224 / 15 为例,初始寄存器状态和每次迭代后的寄存器内容如下:
| 步骤 | 操作 | DX | AX |
| ---- | ---- | ---- | ---- |
| 初始 | - | 0000
超级会员免费看
订阅专栏 解锁全文
5923

被折叠的 条评论
为什么被折叠?



