(1)mov指令
mov 寄存器 ,数据 如:mov ax ,8
mov 寄存器,寄存器 如:mov ax,bx
mov 寄存器,内存单元 如:mov ax,[0]
mov 内存单元,寄存器 如:mov [0],ax
mov 段寄存器,寄存器 如:mov ds,ax
(2)add指令
add 寄存器,数据 如:add ax,8
add 寄存器,寄存器 如:add ax,bx
add 寄存器,内存单元 如:add ax,[0]
add 内存单元,寄存器 如:add [0],ax
(3)sub指令
sub 寄存器,数据 如:sub ax,9
sub 寄存器,寄存器 如 sub:ax,bx
sub 寄存器 ,内存单元 如:sub ax,[0]
sub 内存单元,寄存器 如:sub [0],ax
(4)and指令
逻辑与指令,按位进行与运算
例如: mov al ,01100011B
and al ,00111011B
(5)or指令
按位或指令,按位进行或运算
例如: mov al ,01100011B
or al ,00111011B
(6)数据长度:8086CPU指令中,可以处理两种尺寸的数据,byte和word。
(6.1)通过寄存器名指明要处理的数据的尺寸。
(6.2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编语言中可以为word或者byte。例如:mov word ptr ds:[0] , 1
(6.3)有些指令默认了访问的是字单元还是字节单元,比如push指令只进行字操作。
(7)div指令
(7.1)除数:有8位和16位两种,在一个reg或者内存单元中。
(7.2)被除数:默认放在AX或DX和AX中,如果除数为8位,被除数为16位,默认在AX中存放;如果除数为16位,被除数为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
(7.3)结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
div的格式如下:
div reg
div 内存单元
(8)伪指令dd
db(define byte)定义字节型数据,dw(define word)定义字型数据,dd(double word双字)定义双字型数据。
(9)dup指令
dup是一个操作符,在汇编语言中通db、dw、dd一样,也是由编译器是被处理的符号。它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。
db 3 dup (0) 定义了3个字节,它们的值都是0,相当于db 0 0 0
db 3 dup(0,1,2) 定义了9个字节,它们是0、1、2、0、1、2、0、1、2,相当于db 0,1,2,0,1,2,0,1,2
dup的使用格式如下:
db 重复的次数 dup (重复的字节型数据)
db 重复的次数 bup (重复 的字型数据)
bd 重复的次数 bup (重复 的双字型数据)
(10)push和pop指令
push 寄存器;//将一个寄存器中的数据入栈
pop 寄存器;//出栈,用一个寄存器接收出栈的数据
push 段寄存器;//将一个段寄存器中的数据入栈
pop 段寄存器;//出栈,用一个段寄存器接收出栈的数据
push和pop也可以在内存单元和内存单元之间传送数据:
push 内存单元;//将一个内存字单元处的数据入栈(栈操作都是以字为单位)
pop 内存单元;//出栈,用一个内存字单元接收出栈的数据
指令执行时,CPU要知道内存单元的地址,可以在push、pop指令中只给出内存单元的偏移地址,段地址在指令执行时,CPU从ds中获取。
(1)在SS、SP中存放栈顶的地址和偏移地址。提供入栈和出栈指令,它们根据SS:SP指示的地址,按照栈的方式访问内存单元。
(2)push指令的执行步骤:①SP=SP-2:②向SS:SP指向的字单元中送入数据。
(3)pop指令的执行步骤:①从SS:SP指向的字单元中读取数据;②SP=SP+2。
(4)任意时刻,SS:SP指向栈顶元素。
(5)8086CPU只记录栈顶,栈空间的大小我们要自己管理。
(6)用栈来暂存以后需要恢复的寄存器的内容时,寄存器出栈的顺序要和入栈的顺序相反。
(7)push、pop实质上是一种内存传送指令,注意它们的灵活应用。文章来源:https://www.toymoban.com/news/detail-497894.html
文章来源地址https://www.toymoban.com/news/detail-497894.html
到了这里,关于汇编语言—常见汇编指令汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!