汇编语言—常见汇编指令汇总

(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实质上是一种内存传送指令,注意它们的灵活应用。


 

  • 22
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
汇编语言中的TEST指令是一种逻辑运算指令,它将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。不同于AND指令,TEST指令不会修改目标操作数的值。 TEST指令允许的操作数组合与AND指令相同,它可以用来判断操作数中的单个位是否置位。运算结果在设置过相关标志位后会被丢弃,因此TEST指令通常用于条件判断。 总结而言,TEST指令在汇编语言中用来进行逻辑与运算,并设置相应的标志位,但不会修改操作数的值。它常用于条件判断的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [x86架构汇编指令介绍](https://download.csdn.net/download/haoyuxuanyuan/87530752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作](https://blog.csdn.net/Javaxuxuexi/article/details/93518736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [汇编语言Test指令](https://blog.csdn.net/r1553789169/article/details/109965726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值