汇编语言指令的基本格式是什么

汇编语言指令的基本格式是什么,第1张

SHL/SAL一样:逻辑/算术左移,最高位进到CF,最低位补0;\x0d\SHR:逻辑右移,最低位进到CF,最高位补0;\x0d\SAR:算术右移,最低位进到CF,最高位不变;\x0d\ROL:循环左移,最高位进到CF的同时补到最低位;\x0d\ROR:循环右移,最低位进到CF的同时补到最高位;\x0d\RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位;\x0d\RCR:带进位循环右移,最低位进到CF的,同时CF值补到最高位;\x0d\SHLD:双精度左移,第二个 *** 作数移位到第一个 *** 作数,第一 *** 作数进到CF,和逻辑左移类似,低位移到高位;\x0d\SHRD:双精度左移,第二个 *** 作数移位到第一个 *** 作数,第一 *** 作数进到CF,和逻辑由移类似,高位移到低位;\x0d\\x0d\这样差不多可以了吧。

附表52

指令汇编格式

指令类型

指令汇编格式

指令功能简介

传送指令

MOV

reg/mem,imm

;dest←src

MOV

reg/mem/seg,reg

MOV

reg/seg,mem

MOV

reg/mem,seg

交换指令

XCHG

reg,

reg←→reg/mem

XCHG

reg/mem,reg

转换指令

XLAT

label

;AL←[BX+AL]

XLAT

堆栈指令

PUSH

r16/m16/seg

;入栈

POP

r16/m16/seg

;出栈

CS除外

标志传送

CLC

;CF←0

STC

;CF←1

CMC

;CF←

CLD

;DF←0

STD

;DF←1

CLI

;IF←0

STI

;IF←1

LAHF

;AH←标志寄存器低字节

SAHF

;标志寄存器低字节←AH

PUSHF

;标志寄存器入栈

POPF

;出栈到标志寄存器

地址传送

LEA

r16,mem

;r16←16位有效地址

LDS

r16,mem

;DS:r16←32位远指针

LES

r16,mem

;ES:r16←32位远指针

输入

IN

AL/AX,i8/DX

;AL/AX←I/O端口i8/DX

输出

OUT

i8/DX

,AL/AX

;I/O端口i8/DX←AL/AX

加法运算

ADD

reg,imm/reg/mem

;dest←dest+src

ADD

mem,imm/reg

ADC

reg,imm/reg/mem

;dest←dest+src+CF

ADC

mem,imm/reg

INC

reg/mem

;reg/mem←reg/mem+1

减法运算

SUB

reg,imm/reg/mem

;dest←dest-src

SUB

mem,imm/reg

SBB

reg,imm/reg/mem

;dest←dest-src-CF

SBB

mem,imm/reg

DEC

reg/mem

;reg/mem←reg/mem-1

NEG

reg/mem

;reg/mem←

+1

CMP

reg,imm/reg/mem

;dest-src

CMP

mem,imm/reg

乘法运算

MUL

reg/mem

;无符号数乘法

IMUL

reg/mem

;有符号数乘法

除法运算

DIV

reg/mem

;无符号数除法

IDIV

reg/mem

;有符号数除法

符号扩展

CBW

;将AL符号扩展为AX

CWD

;将AX符号扩展为DXAX

十进制调整

DAA

;将AL中的加和调整为压缩BCD码

DAS

;将AL中的减差调整为压缩BCD码

AAA

;将AL中的加和调整为非压缩BCD码

AAS

;将AL中的减差调整为非压缩BCD码

AAM

;将AX中的乘积调整为非压缩BCD码

AAD

;将AX中的非压缩BCD码转成二进制

逻辑运算

AND

reg,imm/reg/mem

;dest←dest

AND

src

AND

mem,imm/reg

OR

reg,imm/reg/mem

;dest←dest

OR

src

OR

mem,imm/reg

XOR

reg,imm/reg/mem

;dest←dest

XOR

src

XOR

mem,imm/reg

TEST

reg,imm/reg/mem

;dest

AND

src

TEST

mem,imm/reg

NOT

reg/mem

;reg/mem←

移位

SAL

reg/mem,1/CL

;算术左移1位/CL指定的位数

SAR

reg/mem,1/CL

;算术右移1位/CL指定的位数

SHL

reg/mem,1/CL

;逻辑左移1位/CL指定的位数

SHR

reg/mem,1/CL

;逻辑右移1位/CL指定的位数

ROL

reg/mem,1/CL

;循环左移1位/CL指定的位数

ROR

reg/mem,1/CL

;循环右移1位/CL指定的位数

RCL

reg/mem,1/CL

;带进位循环左移1位/CL指定的位数

RCR

reg/mem,1/CL

;带进位循环右移1位/CL指定的位数

串 *** 作

MOVS[B/W]

;串传送

LODS[B/W];

串读取

STOS[B/W];

串存储

CMPS[B/W]

;串比较

SCAS[B/W]

;串扫描

REP

;重复前缀

REPZ/REPE

相等重复前缀

REPNZ/REPNE

不等重复前缀

控制转移

JMP

label

无条件直接转移

JMP

r16/m16

无条件间接转移

Jcc

label

条件转移

cc可为C/NC/Z/NZ/S/NS/O/NO/B/NB/BE/NBE/L/NL/LE/NLE

循环

LOOP

label

CX←CX-1;若CX≠0,则循环

LOOPZ/LOOPE

label

CX←CX-1;若CX≠0且ZF=1,则循环

LOOPNZ/LOOPNE

label

CX←CX-1;若CX≠0且ZF=0,则循环

JCXZ

label

若CX=0,则循环

子程序

CALL

label

直接调用

CALL

r16/m16

间接调用

RET

无参数返回

RET

i16

有参数返回

指令类型

指令汇编格式

指令功能简介

中断

INT

i8

中断调用

INTO

溢出中断调用

IRET

中断返回

处理器控制

NOP

空 *** 作指令

seg:

段跨越前缀

除CS

HLT

停机指令

LOCK

封锁前缀

WAIT

等待指令

ESC

mem

换码指令

汇编语言的指令格式,目前有两种不同的标准:Windows下的汇编语言基本上都遵循Intel风格的语法,比如:MASM、NASM;而Unix/Linux下的汇编语言基本上都遵循AT&T风格的语法;

一、汇编语言语句的通用格式

[名称[:]]

指令码

[第一 *** 作数][,第二 *** 作数]

;注释

汇编语言的指令码的 *** 作数的个数可以是0、1、2个;当 *** 作数的个数为2的时候,语句还有两种不同的格式:

Windows下Intel风格的汇编语言语句格式为:

[名称[:]]

指令码

目的 *** 作数DST,源 *** 作数SRC

;注释

Unix/Linux下AT&T风格的汇编语言语句格式为:

[名称[:]]

指令码

源 *** 作数SRC,目的 *** 作数DST

;注释

例如:

CYCLE:

ADD

AX,02H

;(AX)<-(AX)+02H

解释:

汇编语言语句格式中的"名称"并不是所有语句都必需的,但是,如果语句中带有"名称",那么,大多数情况下,"名称"都表示的是内存中某一存储单元的地址,也就是"名称"后面各项在内存中存放的第一个存储单元的地址(包括该"名称"所在段的段地址和段内偏移地址);比如上面的指令中,CYCLE就是该语句的名称,CYCLE表示的就是其后面的机器指令码在内存中存放的第一个地址;"名称"与指令码之间的分隔符可以是冒号":",也可以是空格字符"

";当以冒号分割时,该名称代表的是一个标号;当以空格分割时,该名称代表的可能是标号,也可能是变量;当指令码有多个 *** 作数的时候,相邻两个 *** 作数之间要用逗号","分割;指令码与 *** 作数之间必须以空格分割;汇编语言语句的注释必须以分号";"开头;

以上就是关于汇编语言中的“移位指令”具体的 *** 作是什么全部的内容,包括:汇编语言中的“移位指令”具体的 *** 作是什么、汇编语言程序指令知多少、汇编语言指令的基本格式是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8864985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存