本文主要是介绍(二)《汇编语言(王爽)》 | 检测点 2.1、2.2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 检测点 2.1
- 2. 检测点 2.2
1. 检测点 2.1
(1)写出每条汇编指令执行后相关寄存器中的值。
- 8086CPU 的所有寄存器都是 16 位的,可以存放两个字节。 AX、BX、CX、DX 四个寄存器用来存放一般数据,被称为通用寄存器。通用寄存器都可以分为两个独立的 8 位寄存器来使用:如 AX 可分为 AH 和 AL,其他寄存器类。
- 在进行数据传送或运算时,指令的两个操作对象的位数应当是一致的。如,针对 8 位的 AX 的低字节寄存器 AL 的运算溢出后不进位到 AH 中;针对 16 位时可以进位。
指令 | AX | BX | CX |
---|---|---|---|
mov ax,62627 | F4A3H | - | - |
mov ah,31H | 31A3H | - | - |
mov al,23H | 3123H | - | - |
add ax,ax | 6246H | - | - |
mov bx,826CH | 6246H | 826CH | - |
mov cx,ax | 6246H | 826CH | 6246H |
mov ax,bx | 826CH | 826CH | 6246H |
add ax,bx | 04D8H | 826CH | 6246H |
mov al,bh | 0482H | 826CH | 6246H |
mov ah,bl | 6C82H | 826CH | 6246H |
add ah,ah | D882H | 826CH | 6246H |
add al,6 | D888H | 826CH | 6246H |
add al,al | D810H | 826CH | 6246H |
mov ax,cx | 6246H | 826CH | 6246H |
注:上述黑体部分中,低位的运算没有影响到高位。 |
(2)最多使用四条 mov、add 命令编程计算 2 的 4 次方。
mov ax,2
add ax,ax
add ax,ax
add ax,ax
2. 检测点 2.2
(1)给定段地址为 0001H,仅通过变化偏移地址寻址,CPU 的寻址范围为 00010H 到 1000FH。
- 8086CPU 有 20 位地址总线,但其在内部一次性处理、传输、暂存的地址为 16 位。8086CPU 采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址,一个 16 位地址叫段地址、另一个叫偏移地址,合成公式是:段地址 × 16 + 偏移地址。
- 本题中,由于偏移地址是 16 位,即 0000H~0FFFFH,所以最终 CPU 的寻址范围为 0001H × 16 + 0000H ~ 0FFFFH。
(2)有一数据存在内存 20000H 单元中,现给定段地址为 SA,若想用偏移地址寻到此单元。则 SA 应满足的条件是:最小为 1001H,最大为 2000H。
由公式 段地址 × 16 + 偏移地址,得到的区间 SA × 16 + (0000H~FFFFH) 应包括地址 20000H,将其分段后有 20000H >= SA × 16 + 0000H 并且 20000H <= SA × 16 + FFFFH。
这篇关于(二)《汇编语言(王爽)》 | 检测点 2.1、2.2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!