王爽汇编语言学习笔记(二)--寄存器



字在寄存器中的存储

8086 CPU可以一次性处理字节(byte)和字(word)两种尺寸数据。

 

2 AL AH是独立的寄存器,CPU在执行指令时,认为AH AL是两个不相关的寄存器。

 若 AL = 90 H  ADD AL,90H AX = 20H, 产生的进位不会存储在AH中。

 

3 8086 CPU读写内存步骤:

 1) CPU中的相关部件提供两个16位的地址:段地址和偏移地址;

 2) 段地址和偏移地址通过内部总线送入地址加法器;

 3) 地址加法器将两个16位地址合成一个20位物理地址;

 4) 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;

 5) 输入输入控制电路将20位地址送入地址线;

 620位物理地址呗地址总线送入外部存储器。

 

物理地址 段地址 *16 +偏移地址 的本质含义

段地址包含着“段”的概念,但这种说法对我这种初学者产生了误导,误以为内存被划分成了一个一个的段,每一个段有一个段地址,我上学时就一直这么认为的,但这是错误的理解。

内存并没有分段,段的划分来自CPU,CPU用“段地址 *16 +偏移地址”的方式管理内存。因此段的概念只是用来寻址的,不是用来划分内存的。段地址+偏移地址只是一种寻址方式。

在编程时刻根据需要,将若干地址连续的内存单元看做一个段。

偏移地址是16位,所以一个段的长度最大为64KB

 

序号

物理地址

段地址

偏移地址

1

21F60H

2000H

1F60H

2

21F60H

2100H

0F60H

 

 结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。

段寄存器:CS DS SS ES

6 CS IP

  CPU从内存CS*16+IP段元开始,读取一条指令并执行。读取一条指令后,IP的值自动增加。

  CPU工作过程:

  1)  CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

  2)  IP=IP+所读取指令的长度,从而指向下一条指令;

  3)  执行指令,转到步骤1) 

结论:读取指令后,IP自动增加后,执行指令。

汇编学习环境的搭建:

我搭建一个练习汇编的学习环境。软硬件配置如下:

硬件平台:x86 i7 处理器

操作系统:Win8.1

所需软件:DOSBOX MASM

 

由于我家电脑是64位处理器和64位的操作系统,导致DOS系统的masm程序和debug程序无法运行,因此必须安装DOSBOX软件。在DOSBOX下运行MASMdebug软件进行程序程序编译和调试。

DOSBOX使用方法:http://jingyan.baidu.com/article/ceb9fb10dc75c38cad2ba098.html 

 

8 debug功能简介
1)用R命令查看、改变CPU寄存器内容;

2)D命令查看内存中的内容;

3)E命令改变内存中的内容;

4)U命令将内存中的机器指令翻译成汇编指令;

5)T命令执行一条机器指令;

6)A命令以汇编指令的格式在内存中写入一条机器指令。

 

你可能感兴趣的:(汇编语言)