blubiu

My Love

上网不网恋,简直浪费电.


汇编语言笔记(二)--寄存器(内存访问)


前言:

寄存器(内存访问)。


目录:


几个通用寄存器介绍:

AX 寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。

BX 寄存器称为基址寄存器,常用来存放访问内存时的地址。

CX 寄存器称为计数寄存器,在循环、串操作指令中用作计数器。

DX 寄存器称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。

此外,在做双字长乘除法运算时,DXAX 合起来存放一个双字长数(32位),其中 DX 存放高16位,AX 存放低16位。


DS 寄存器和 ES 寄存器:

DS 寄存器和 ES 寄存器:

  1. DS 数据段寄存器(Data Segment)

  2. ES 附加段寄存器(Extra Segment)

特点:

  1. 属于段寄存器,不能直接保存数据,只能通过其他的段寄存器保存数据。

  2. 他们两个一个没有明显的区别,但是DS 是其他指针寄存器的默认段寄存器。(BX,BP,SI,DI)

举个粟子:

假设我们要将 a1 中的数据送入内存单元 10000H

那么完整的指令应该是:

mov bx,1000H
mov ds,bx
mov [0],al

因为CPU不能直接将数据直接送入 ds 寄存器中,

所以只能通过其他寄存器送入。

[] 括号表示一个内存单元,0 表示内存单元的偏移地址


mov、add、sub 指令:

mov传送指令mov a,b 将b数据放进a

mov 寄存器, 数据 ---> 比如:mov ax,8
mov 寄存器, 寄存器 ---> 比如:mov ax,bx
mov 寄存器, 内存单元 ---> 比如:mov ax,[0]
mov 内存单元,寄存器 ---> 比如:mov [0],ax
mov 段寄存器, 寄存器 ---> 比如:mov ds,ax

add求和指令 add a,b a=a+b

add 寄存器, 数据 ---> 比如:add ax,8
add 寄存器, 寄存器 ---> 比如:add ax,bx
add 寄存器, 内存单元 ---> 比如:add ax,[0]
add 内存单元,寄存器 ---> 比如:add [0],ax

sub减法指令 sub a,b a=a-b

sub 寄存器, 数据 ---> 比如:sub ax,8
sub 寄存器, 寄存器 ---> 比如:sub ax,bx
sub 寄存器, 内存单元 ---> 比如:sub ax,[0]
sub 内存单元,寄存器 ---> 比如:sub [0],ax

总结

学习真香。