【汇编复习】寄存器

寄存器

通用寄存器

数据寄存器

16位寄存器:ax,bx,cx,dx
每一个寄存器可以分为高8位和低8位,al,ah,ba,bh…分别使用
习惯用法:
ax:累加器
bx:基址寄存器,寻址时存放基地址
cx:计数寄存器,循环时作为计数器
dx:数据寄存器,辅助ax存放较大的数

地址寄存器

16位寄存器:si,di,sp,dp
多用来作为数组下标使用

段寄存器

16位寄存器:cs,ss,ds,es
cs:代码段的地址
ss:堆栈段的地址
ds:数据段的地址
es:附加段的地址,用来编程时候自己标记段的位置

控制寄存器

ip:指向需要运行的下一条指令的偏移地址,cs:ip组成下一条指令的地址
fl:标志寄存器,16位但是只用到9位
每一位的值只有0或者1,每一次运算都会更新(add sub mul div )但是inc和dnc不影响
这个较为重要

寄存器符号 名称 意义 指令
of(overflow flag) 溢出标志位 只在符号数运算时有意义,正数相加为负数,负数相加为正数则溢出,一正一负相加不溢出;正数减负数为负数,负数减正数为正数溢出,溢出为1,否则为0,只对符号数结果有意义 jo表示of=1跳,jno表示of=0跳
sf(sign flag) 符号标志位 运算结果的首位,负数则为1,只对符号数结果有意义 js表示sf=1时跳,jns表示sf=0时跳
zf(zero flag) 零标志位 运算结果为0时zf=1;否则zf=0 jz表示zf=1跳,jnz表示zf=0时跳
cf(carry flag) 进位标志位 运算最高位产生借位或者进位则为1(或者说看最高位是否变化)不变则为0,只对非符号数有意义 jc表示cf=1跳,jnc表示cf为0跳,clc表示cf赋值为0,stc表示cf赋值为1,cmc表示反转
af 赋值进位标志 第三位是否改变
pf 奇偶标志位 用来为计算机运送数据时可能出现的错误提供检验,1的个数为奇则为0,为偶则为1,现在用处已经不大
df(direct flag) 方向标志 控制处理数据的方向,df=1,每次操作si,di增加,数据处理从高地址到低地址进行,df=0,si,di每次减少,数据处理从低地址向高地址进行 cld,df=0;std,df=1
if 中断标志 if=1允许中断,if=0,不允许中断 cli.if=0;sti,if=1
tf 跟踪标志 用于调试时单步工作方式,tf=1,每条指令后都会中断,tf=0,不允许中断

猜你喜欢

转载自blog.csdn.net/HGGshiwo/article/details/106988687