首页 > 编程知识 正文

指令表语言(汇编语言lodsb指令)

时间:2023-05-05 00:43:58 阅读:74000 作者:3589

汇编语言一般指令解释_汇编语言指令大全

一.数据传输指令

它们在存储器和寄存器、寄存器和输入输出端口之间传输数据。

1 .通用数据传输命令。

MOV传输字或字节。

MOVSX在码扩展后发送。

MOVZX扩展为零后发送。

PUSH把字塞进堆栈里。

POP从堆栈中弹出单词。

PUSHA将AX、CX、DX、BX、SP、BP、SI和DI按顺序推入堆栈。

POPA将DI、SI、BP、SP、BX、DX、CX、AX依次从堆栈中排出。

PUSHAD依次将EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI推入堆栈。

POPAD按照EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX的顺序排出堆栈。

BSWAP交换32位寄存器内的字节顺序

XCHG交换字或字节((至少有一个**操作数是寄存器,段寄存器不能用作**操作数) ) ) ) ) ) ) )。

CMPXCHG比较和交换**操作数。 ((第二个**操作数必须是累加器AL/AX/EAX ) ) ) ) ) )。

XADD更换后累积.(结果在最初的**作品数上) ) ) ) ) ) ) ) )。

XLAT字节的查找表转换。

—— BX指向256字节的表的开头,AL表示表的索引值(

0-FFH; AL是查找表的结果。 (([BX AL]-AL ) ) ) ) ) )。

2 .输入输出端口转发命令。

输入I/o端口输入((语法: IN输入累加器,(端口号dx ) ) ) ) ) ) )

OUT I/O端口输出((语法: OUT { (端口号dx )、累加器() ) ) ) ) ) ) ) )。

输入输出端口以即时方式指定时,其范围为0-255; 在由寄存器DX指定情况下,

其范围为0-65535。

3 .目标地址传输命令。

LEA加载有效的地址。

例: LEA DX、string; 将偏移地址保存在DX中。

LDS传输目标指针,并将指针的内容加载到DS中。

例: LDS SI、string; 将段地址:偏移地址存储在DS:SI中。

LES发送目标指针,将指针的内容放入ES中。

例: LES DI,string; 将段地址:偏移地址存储在ES:DI中.

LFS转发目标指针,并将指针的内容加载到FS中。

例: LFS DI、string; 将段地址:偏移地址存储在FS:DI中.

LGS传输目标指针,将指针的内容嵌入GS中。

例: LGS DI、string; 将段地址:偏移地址存储在GS:DI中.

LSS传输目标指针,并将指针的内容加载到SS中。

例: LSS DI、string; 将段地址:偏移地址存储在SS:DI中.

4 .标志传输命令。

传送LAHF标志寄存器,并将标志加载到AH中。

传送SHF标志寄存器,将AH内容加载到标志寄存器中.

PUSHF标志进入堆栈。

出现POPF标志。

PUSHD 32位标志进入堆栈。

出现POPD 32位标志。

二.算术运算命令

添加加法。

ADC频段进位加法。

在INC上加1。

AAA加法的ASCII码调整

DAA加法的十进制调整。

辅减法。

SBB有借位减法。

直流负1。

NEC要求反击(从0开始减去)。

CMP比较. (减去2**,只修改标志位,不返回结果)。

AAS减法的ASCII代码调整

DAS减法的十进制调整

无MUL符号乘法。

IMUL整数乘法。

以上两个结果返回AH和AL (字节运算)或DX和AX (字运算),

am乘法的ASCII码调整

无DIV符号除法。

IDIV整数除法。

以上两条,结果发回:

商返回AL,馀数返回AH,(字节运算);

或者商发回AX,馀数发回DX,(字运算)。

ad除法的ASCII代码调整

将CBW字节转换为字((将AL中字节的符号扩展为AH ) ) ) ) ) ) )。

将CWD字转换为双字((将AX中的字的符号扩展到DX中) ) ) ) ) ) )。

将CWDE字转换为双字((将AX的字符号扩展为EAX ) ) )。

CDQ双字扩展. (将EAX中的字符号扩展为EDX ) )。

三.逻辑运算命令

与和运算。

或运算。

XOR异或运算。

NOT取反。

TEST测试. (与2**操作数进行运算,只修改标志位,不返回结果)。

SHL逻辑向左移动。

SAL算术左移((=SHL ) ) ) ) )。

SHR逻辑右移。

SAR算术

右移.(=SHR)

ROL 循环左移.

ROR 循环右移.

RCL 通过进位的循环左移.

RCR 通过进位的循环右移.

以上八种移位指令,其移位次数可达255次.

移位一次时, 可直接用**作码. 如 SHL AX,1.

移位>1次时, 则由寄存器CL给出移位次数.

如 MOV CL,04

SHL AX,CL

四、串指令

DS:SI 源串段寄存器 :源串变址.

ES:DI 目标串段寄存器:目标串变址.

CX 重复次数计数器.

AL/AX 扫描值.

D标志 0表示重复**作中SI和DI应自动增量; 1表示应自动减量.

Z标志 用来控制扫描或比较**作的结束.

MOVS 串传送.

( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )

CMPS 串比较.

( CMPSB 比较字符. CMPSW 比较字. )

SCAS 串扫描.

把AL或AX的内容与目标串作比较,比较结果反映在标志位.

LODS 装入串.

把源串中的元素(字或字节)逐一装入AL或AX中.

( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )

STOS 保存串.

是LODS的逆过程.

REP 当CX/ECX<>0时重复.

REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.

REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.

REPC 当CF=1且CX/ECX<>0时重复.

REPNC 当CF=0且CX/ECX<>0时重复.

五、程序转移指令

1>无条件转移指令 (长转移)

JMP 无条件转移指令

CALL 过程调用

RET/RETF过程返回.

2>条件转移指令 (短转移,-128到+127的距离内)

( 当且仅当(SF XOR OF)=1时,OP1

JA/JNBE 不小于或不等于时转移.

JAE/JNB 大于或等于转移.

JB/JNAE 小于转移.

JBE/JNA 小于或等于转移.

以上四条,测试无符号整数运算的结果(标志C和Z).

JG/JNLE 大于转移.

JGE/JNL 大于或等于转移.

JL/JNGE 小于转移.

JLE/JNG 小于或等于转移.

以上四条,测试带符号整数运算的结果(标志S,O和Z).

JE/JZ 等于转移.

JNE/JNZ 不等于时转移.

JC 有进位时转移.

JNC 无进位时转移.

JNO 不溢出时转移.

JNP/JPO 奇偶性为奇数时转移.

JNS 符号位为 "0" 时转移.

JO 溢出转移.

JP/JPE 奇偶性为偶数时转移.

JS 符号位为 "1" 时转移.

3>循环控制指令(短转移)

LOOP CX不为零时循环.

LOOPE/LOOPZ CX不为零且标志Z=1时循环.

LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.

JCXZ CX为零时转移.

JECXZ ECX为零时转移.

5>中断指令

INT 中断指令

INTO 溢出中断

IRET 中断返回

5>处理器控制指令

HLT 处理器暂停, 直到出现中断或复位信号才继续.

WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.

ESC 转换到外处理器.

LOCK 封锁总线.

NOP 空**作.

STC 置进位标志位.

CLC 清进位标志位.

CMC 进位标志取反.

STD 置方向标志位.

CLD 清方向标志位.

STI 置中断允许位.

CLI 清中断允许位.

六、伪指令

DW 定义字(2字节).

PROC 定义过程.

ENDP 过程结束.

SEGMENT 定义段.

ASSUME 建立段寄存器寻址.

ENDS 段结束.

END 程序结束

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。