汇编指令

汇编指令

  1. 寄存器

Ax : 累加器

Bx:通用寄存器也是基址寄存器 通常作为偏移地址寄存器使用

Mov  ax  ,[bx]

CX:通用寄存器,但是一般个loop一起使用

Mov  cx,8

S: add ax,

Loop s

DX:通用寄存器

 

Cs:代码段寄存器: 通常和IP一起作为指令执行的地址指向,本身是代码段开始的地址寄存器

DS: 数据段寄存器: 需要定义的一些数据,直接定义在DS中,不容易导致代码运行混乱  DS也作为段地址计算物理内存地址,是BX的默认的段地址

ES 附加段寄存器

SS: 堆栈段寄存器:一般定义的堆栈或者申请堆栈段内存的时候使用该寄存器

通常Ss:Sp 一起使用,指向堆栈段的栈顶元素,和push,pop指令有关,栈的最大容量为64K。

  1. mov  add, sub

mov  字的传送指令

mov  ax,1000H,这里一般涉及到寄存器寻址方式。不同的传送方式表示不同的寄存器寻址方式

add :加法指令

add  ax,1  把1和ax加起来并存进去 ax寄存器中

sub 减法指令,和add功能类似

3.Push pop 指令  这里注意任何时刻,SS:SP  都是指向栈顶元素

 

Push  入栈操作:

Push ax  把ax中的值送入栈中

一般是把栈中的字就两个字节送入栈中,就是把ss:sp指向的栈顶元素送入ax中

Push ax的默认操作:

Sp=sp-2:先修改栈顶地址,然后入栈,为什么是sp=sp-2 因为内存是高地址高位

将ax中的值送入栈中

那么pop的操作正好相反

Sp=sp+2

把栈顶元素送入ax中,所以这符合栈的特性:先入后出

 

4:BX和loop

 【bx】表示的是偏移地址,而loop表示的是循环指令

Loop:

Mov   cx,11;

S: add  ax ,1

Loop s

Loop 指令没执行一次 cx的值就减一,当cx为0时候就不循环了

5: and和or指令  逻辑与指令和逻辑或指令

Mov  al ,00001111B

And  al,11110000B

Or  al,00010010B

6:si+Di和 【bx】的功能相似,但是更多的是作为源地址寄存器和目的地址寄存器,比如实现字符串的操作

7:bx bp di  si  这四个寄存器都可以单个或者组合作为偏移地址。表示寄存器要处理的数据在什么地方,那么什么时候单个,什么时候组合呢??

Bp是默认的段地址为SS

BX等默认的段地址是DS

在没有寄存器名存在的情况下,用操作符 x ptr  指明内存单元的长度,x在汇编指令中可以为word或byte

Mov   ax,1

可以改为  mov word  ptr ds:[0] ,1

8 div指令  除法指令

  1. 除数,有八位和16位两种,在一个reg或者内存单元中
  2. 被除数,默认放在ax或者ax+dx中,如果除数为8位,被除数则为16位,默认在ax中存放,如果除数为16位,被除数则为32位,在dx和ax中存放
  3. 结果:如果除数为8位,则al存储除数操作的商,ah存储书法操作的余数:

如果除数为16位,ax存储除法操作的商,dx存储除法操作的余数

Div 除数       div  1234H

4:伪指令dd和dup

Db  dw  dd  定义字节,字 双字

Db  00001111B

Dd 3 dup(0)  定义三个字,里面全是0

9 转移指令

Offset  这个指令是获取标志符号的偏移地址

Start : mov ax  offset start ;把start的内存的偏移址里面的值给ax

Jmp转移指令: jmp指令后面的标号并不指的是跳转的地址,而是需要转移的位移,根据位移计算跳转到哪。

Jmp short  标号

 

Jcxz 有条件转移指令:虽有的有条件转移指令都是短转移: 在对应的机器码中包赚转移的位移,而不是目的地址,对ip 的修改范围为:-128-127

根据位移进行转移的指令,他们的转移范围受到转移位移真

得限制,如果在源程序中出现了转移范围超界的问题,编译时候回报错

 

Call和ret指令:转移指令,修改ip或者同事修改cs和ip,用来实现子程序的设计。

10.标志寄存器:

ZF: 计算结果是否为零标志寄存器

PF:奇偶标志寄存器

SF  :有符号数标志寄存器

CF :无符号数标志寄存器

OF :溢出标志寄存器

DF:方向标志寄存器,进行串操作联合使用

Df=0  每次操作后si  di  递增

Df=1 每次操作后si di 递减

Movsb    (es)*16+di=ds *16+si

Movsb 和rep一起使用相当于

s:movsb

loop  s

 

Pushf   popf

Pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器中。Pushf和popf为直接访问标志寄存器提供了一种方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值