8086汇编学习笔记4-指令

来源:互联网 发布:淘宝导航栏分割线代码 编辑:程序博客网 时间:2024/06/07 05:39

汇编指令,有相对应的机器指令

1. 数据传送指令mov

mov ax, bx

2. 加法指令add

mov ax, 1

mov bx, 2

add ax, bx;ax=ax+bx

执行后ax值为3

3. 加1指令inc

mov bx, 1

inc bx

运算后bx值为2,相当于执行add bx, 1

4. 减法指令sub

mov ax, 5

mov bx, 3

sub ax, bx;ax=ax-bx

执行后ax值为2

5. 乘法指令mul

8位数相乘,相乘的数都为8位,一个默认在al中,另一个在寄存器或内存中,指令执行后,结果在ax中

16位数相乘,相乘的数都为16位,一个默认在ax中,另一个在寄存器或内存单元中,指令执行后,结果在ax和dx中,dx存放高16位,ax存放低16位

例如计算100*10

分析,两个数都小于255,可以做8位乘法

mov al, 100

mov bl, 10

mul bl

结果ax值为1000

6. 除法指令div

div 寄存器或内存单元,

8位除法,除数8位,在一个寄存器或内存单元中,被除数16位,默认在ax中,指令执行后,al中存放商,ah存放余数

16位除法,除数16位,在寄存器或内存中,被除数32位,默认在ax和dx中,dx存放高16位,ax存放低16位,指令执行后,ax存放商,dx存放余数

例如计算1001/100

分析,被除数1001可以用ax存放,除数100可以用一个8位寄存器存放,所以可以进行8位除法

mov ax, 1001

mov bl, 100

div bl

执行后al值为10,ah值为1

7. and逻辑与指令,按位进行与运算

mov al, 01100011b

and al, 00111011b

运算后al值为00100011b

8. or逻辑或指令,按位进行或运算

mov al, 01100011b

or al, 00111011b

运算后al值为01111011b

9. 逻辑左移指令shl和逻辑右移指令shr

逻辑移位,最后移出位写入CF中,差的位用0补充,如果移动位数大于1,则必须将移动位数放在cl寄存器中。

mov al, 01001000b

shl al, 1

运算后al值为10010000b,CF值为0

mov al, 01010001b

mov cl, 3

shl al, cl

运算后al值为10001000b,CF值为0

10. 循环指令loop

loop 标号

CPU在执行loop指令时,先将cx值减1,再判断cx值是否为0,如果为0,结束循环,如果不为0,跳到标号处继续执行程序

    mov ax, 2

   

    mov cx, 11

s:  add ax, ax

loop s

循环11次,执行add指令,结果为2的12次方运算

11. adc指令,带进位加法指令,做加法时加上CF这个进位,一般和add用于大数据的加法运算

1ef000h+201000h

mov bx, 0f00h

add bx, 1000h;0f00h+1000h

mov ax, 001eh

adc ax, 0020h;001eh+0020h+CF

计算结果在ax和bx中,ax存放低16位,bx存放高16位

12. sbb,带借位减法指令,做减法运算时减去CF这个借位,一般和sub用于大数据的减法运算

003e1000h-00202000h

mov bx, 1000h

sub bx,2000h;1000h-2000h

mov ax, 003eh

sbb ax, 0020h

计算结果在ax和bx中,ax存放高16位,bx存放低16位

13. cmp,比较指令,相当于做减法运算,只是不保存运算的结果,只是对标志寄存器产生影响

条件转移指令

je等于则转移

jne不等于则转移

jb小于则转移

jnb不小于则转移

ja大于则转移

jna不大于则转移

14. 串传送指令

(1) movsb,串传送指令,将ds:si指向的内存单元的字节数据送入到es:di中,根据标志寄存器DF值将si和di增1或减1,DF=0,增1,DF=1,减1

(2) movsw,串传送指令,将ds:si指向的内存单元的字数据送入到es:di中,根据标志寄存器DF值将si和di增2或减2,DF=0,增2,DF=1,减2

rep movb或rep movw根据cx的值,重复执行串传送指令,相当于

s:movsb

loop s

cld将标志寄存器DF置0

sld将标志寄存器DF置1

15. pushf功能是将标志寄存器值压入栈,popf是从栈中弹出数据,送入标志寄存器中

原创粉丝点击