汇编指令汇总,另附有问题(LDS指令用法)
时间:2011-10-23
来源:互联网
1 汇编语言命令大全
汇编命令大全<---->MOV(MOVe) 传送指令P28
PUSH 入栈指令P32
POP 出栈指令P33
XCHG(eXCHanG) 交换指令P34
XLAT(TRANSLATE) 换码指令P34
LEA (Load Effective Address) 有效地址送寄存器指令P35
LDS(Load DS with pointer) 指针送寄存器和DS指令P35
LES(Load ES with pointer) 指针送寄存器和ES指令P35
LAHF(Load AH with Flags) 标志位送AH指令P36
SAHF(Store AH into Flgs) AH送标志寄存器指令P36
PUSHF(PUSH the Flags) 标志进栈指令P36
POPF(POP the Flags) 标志出栈指令P37
ADD 加法指令P38
ADC 带进位加法指令P39
INC 加1指令P39
SUB(SUBtract) 不带借位的减法指令P40
SBB(SuVtrach with borrow) 带借位的减法指令P40
DEC(DECrement) 减1指领P41
NEG(NEGate) 求补指令P41
CMP(CoMPare) 比较指令P42
MUL(unsinged MULtiple) 无符号数乘法指令P46
IMUL(sIgned MUL tiple) 有符号数乘法指令P46
DIV(unsigned DIVide) 无符号数除法指令P48
IDIV(sIgned DIVide) 有符号数除法指令P48
CBW(Count Byte to Word) 字节转换为字指令P50
CWD(Count Word to Doble word) 字转换为双字指令P50
DAA 压缩的BCD码加法十进制调整指令P53
DAS 压缩的BCD码减法十进制调整指令P53
AAA 非压缩的BCD码加法十进制调整指令P54
AAS 非压缩的BCD码加法十进制调整指令P54
AND 逻辑与指令P54
OR 逻辑或指令P55
XOR 逻辑异或指令P56
NOT 逻辑非指令P56
TEST 测试指令P57
SHL(SHift logical Letf) 逻辑左移指令P57
SHR(SHift logical Right) 逻辑右移指令P57
ROL(Rotate Left ) 循环左移指令P58
ROR(Rotate Right) 循环右移指令P58
RCL(Rotate Left through Carry) 带进位循环左移P58
RCR(Rotate Right through Carry) 带进位循环左移P58
MOVS(MOVe String) 串传送指令P58
STOS(STOre into String) 存入串指令P60
LODS(LOad from string) 从串取指令P60
REP(REPeat) 重复操作前缀P61
CLD(CLear Direction flag) 清除方向标志指令P61
STD(SeT Direction flag) 设置方向标志指令P61
CMPS(CoMPare String) 串比较指令P62
SCAS(SCAn String) 串扫描指令P63
REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63
REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀
IN(INput) 输入指令P65
OUT(OUTput) 输出指令P65
JMP(JuMP) 无条件转移指令P66
JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67
LOOP 循环指令P70
LOOPZ/LOOPE 为零/相等时循环指令P70
LOOPNZ/LOOPNE 不为零/不相等时循环指令P70
CALL 子程序调用指令P71
RET(RETun) 子程序返回指令P72
CLC(CLear Carry) 进位位置0指令P77
CMC(CoMplement Carry) 进位位求反指令P77
SRC(SeT Carry) 进位位置1指令P77
NOP(No OPeretion) 无操作指令P77
HLT(HaLT) 停机指令P77
OFFSET 返回偏移地址P85
SEG 返回段地址P85
EQU(=) 等值语句P90
PURGE 解除语句P91
DUP 操作数字段用复制操作符P93
SEGMENT,ENDS 段定义指令P95
ASSUME 段地址分配指令P95
ORG 起始偏移地址设置指令P96
$ 地址计数器的当前值P97
PROC,ENDP 过程定义语句P97
NAME,TITLE,END 程序开始结束语句P98
MACRO,ENDM 宏定义指令P99
--------------------------------------------------------------------------------
段内直接短跳转 JMP SHORT OPR
段内直接近转移 JMP NEAR PTR OPR
段内间接转移 JMP WORD PTR OPR
段间直接转移 JMP FAR PTR OPR
段间间接转移 JMP DWORD PTR OPR
JZ OPR //结果为零转移
JNZ OPR //结果不为零转移
JS OPR //结果为负转移
JNS OPR //结果为正转移
JO OPR //溢出转移
JNO OPR //不溢出转移
JP OPR //结果为偶转移
JNP OPR //结果为奇转移
JC OPR //有进位转移
JNC OPR //无进位转移
MOV AA,BB 将 BB 放到 AA 里
CALL 调用子程序 (相当于 BASIC 的 GOSUB)
RET 与 RETF 返回程序 (相当于 BASIC 的 RETURN)
CMP XX,YY 比较 XX 与 YY
JZ 若相等则转移
JNZ 若不相等则转移
JB 若小于则转移
JG 若大于则转移
JMP 无条件转移
J??? (各种转移指令)
LOOP 循环直到CX为0
INT XX 类似 CALL 的中断涵数
PUSH 推入栈(STACK)ESP:PUSH AX
POP 出栈ESP:POP CX
XCHG 交换ESP:XCHG AX,BX
IN、OUT 与PORT有关的IN/OUT
XLAT 查表
LEA 段内偏移量。ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1
LAHF、SAHF与棋标有关的寄存器 AH
PUSHF、POPF将棋标入/出栈
ADD ESP ADD AX,CX (AX=AX+CX)
ADC 加入棋标C的ADD
INC ESP INC AX(AX=AX+1)
AAA 加法校正
SUB、SBB 减法
DEC ESP: DEC AX(AX=AX-1)
NEG 去补,
MUL、IMUL 乘
DIV、IDIV 除
SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT
OR、XOR、AND 逻辑运算 ESP :XOR AX,AX(AX=0)
直接标志转移
指令格式 机器码 测试条件 如...则转移
JC 72 C=1 有进位
JNS 79 S=0 正号
JNC 73 C=0 无进位
JO 70 O=1 有溢出
JZ/JE 74 Z=1 零/等于
JNO 71 O=0 无溢出
JNZ/JNE 75 Z=0 不为零/不等于
JP/JPE 7A P=1 奇偶位为偶
JS 78 S=1 负号
JNP/IPO 7B P=0 奇偶位为奇
间接标志转移
指令格式 机器码 测试格式 如...则转移
JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于
JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于
JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于
JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于
JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于
JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于
JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于
JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于
无条件转移指令JMP
指令格式 执行操作 机器码 说明
段内直接短转移Jmp short (IP)←(IP)+8位位移量 EB 转移范围-128到+127字节
问题如下:
代码
Assembly code
LDS BX,DWORD PTR BUF1
MOV [BX],1234H
请问LDS指令(书上解释指针送寄存器和DS)的原操作数什么情况下为BX?
汇编命令大全<---->MOV(MOVe) 传送指令P28
PUSH 入栈指令P32
POP 出栈指令P33
XCHG(eXCHanG) 交换指令P34
XLAT(TRANSLATE) 换码指令P34
LEA (Load Effective Address) 有效地址送寄存器指令P35
LDS(Load DS with pointer) 指针送寄存器和DS指令P35
LES(Load ES with pointer) 指针送寄存器和ES指令P35
LAHF(Load AH with Flags) 标志位送AH指令P36
SAHF(Store AH into Flgs) AH送标志寄存器指令P36
PUSHF(PUSH the Flags) 标志进栈指令P36
POPF(POP the Flags) 标志出栈指令P37
ADD 加法指令P38
ADC 带进位加法指令P39
INC 加1指令P39
SUB(SUBtract) 不带借位的减法指令P40
SBB(SuVtrach with borrow) 带借位的减法指令P40
DEC(DECrement) 减1指领P41
NEG(NEGate) 求补指令P41
CMP(CoMPare) 比较指令P42
MUL(unsinged MULtiple) 无符号数乘法指令P46
IMUL(sIgned MUL tiple) 有符号数乘法指令P46
DIV(unsigned DIVide) 无符号数除法指令P48
IDIV(sIgned DIVide) 有符号数除法指令P48
CBW(Count Byte to Word) 字节转换为字指令P50
CWD(Count Word to Doble word) 字转换为双字指令P50
DAA 压缩的BCD码加法十进制调整指令P53
DAS 压缩的BCD码减法十进制调整指令P53
AAA 非压缩的BCD码加法十进制调整指令P54
AAS 非压缩的BCD码加法十进制调整指令P54
AND 逻辑与指令P54
OR 逻辑或指令P55
XOR 逻辑异或指令P56
NOT 逻辑非指令P56
TEST 测试指令P57
SHL(SHift logical Letf) 逻辑左移指令P57
SHR(SHift logical Right) 逻辑右移指令P57
ROL(Rotate Left ) 循环左移指令P58
ROR(Rotate Right) 循环右移指令P58
RCL(Rotate Left through Carry) 带进位循环左移P58
RCR(Rotate Right through Carry) 带进位循环左移P58
MOVS(MOVe String) 串传送指令P58
STOS(STOre into String) 存入串指令P60
LODS(LOad from string) 从串取指令P60
REP(REPeat) 重复操作前缀P61
CLD(CLear Direction flag) 清除方向标志指令P61
STD(SeT Direction flag) 设置方向标志指令P61
CMPS(CoMPare String) 串比较指令P62
SCAS(SCAn String) 串扫描指令P63
REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63
REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀
IN(INput) 输入指令P65
OUT(OUTput) 输出指令P65
JMP(JuMP) 无条件转移指令P66
JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67
LOOP 循环指令P70
LOOPZ/LOOPE 为零/相等时循环指令P70
LOOPNZ/LOOPNE 不为零/不相等时循环指令P70
CALL 子程序调用指令P71
RET(RETun) 子程序返回指令P72
CLC(CLear Carry) 进位位置0指令P77
CMC(CoMplement Carry) 进位位求反指令P77
SRC(SeT Carry) 进位位置1指令P77
NOP(No OPeretion) 无操作指令P77
HLT(HaLT) 停机指令P77
OFFSET 返回偏移地址P85
SEG 返回段地址P85
EQU(=) 等值语句P90
PURGE 解除语句P91
DUP 操作数字段用复制操作符P93
SEGMENT,ENDS 段定义指令P95
ASSUME 段地址分配指令P95
ORG 起始偏移地址设置指令P96
$ 地址计数器的当前值P97
PROC,ENDP 过程定义语句P97
NAME,TITLE,END 程序开始结束语句P98
MACRO,ENDM 宏定义指令P99
--------------------------------------------------------------------------------
段内直接短跳转 JMP SHORT OPR
段内直接近转移 JMP NEAR PTR OPR
段内间接转移 JMP WORD PTR OPR
段间直接转移 JMP FAR PTR OPR
段间间接转移 JMP DWORD PTR OPR
JZ OPR //结果为零转移
JNZ OPR //结果不为零转移
JS OPR //结果为负转移
JNS OPR //结果为正转移
JO OPR //溢出转移
JNO OPR //不溢出转移
JP OPR //结果为偶转移
JNP OPR //结果为奇转移
JC OPR //有进位转移
JNC OPR //无进位转移
MOV AA,BB 将 BB 放到 AA 里
CALL 调用子程序 (相当于 BASIC 的 GOSUB)
RET 与 RETF 返回程序 (相当于 BASIC 的 RETURN)
CMP XX,YY 比较 XX 与 YY
JZ 若相等则转移
JNZ 若不相等则转移
JB 若小于则转移
JG 若大于则转移
JMP 无条件转移
J??? (各种转移指令)
LOOP 循环直到CX为0
INT XX 类似 CALL 的中断涵数
PUSH 推入栈(STACK)ESP:PUSH AX
POP 出栈ESP:POP CX
XCHG 交换ESP:XCHG AX,BX
IN、OUT 与PORT有关的IN/OUT
XLAT 查表
LEA 段内偏移量。ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1
LAHF、SAHF与棋标有关的寄存器 AH
PUSHF、POPF将棋标入/出栈
ADD ESP ADD AX,CX (AX=AX+CX)
ADC 加入棋标C的ADD
INC ESP INC AX(AX=AX+1)
AAA 加法校正
SUB、SBB 减法
DEC ESP: DEC AX(AX=AX-1)
NEG 去补,
MUL、IMUL 乘
DIV、IDIV 除
SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT
OR、XOR、AND 逻辑运算 ESP :XOR AX,AX(AX=0)
直接标志转移
指令格式 机器码 测试条件 如...则转移
JC 72 C=1 有进位
JNS 79 S=0 正号
JNC 73 C=0 无进位
JO 70 O=1 有溢出
JZ/JE 74 Z=1 零/等于
JNO 71 O=0 无溢出
JNZ/JNE 75 Z=0 不为零/不等于
JP/JPE 7A P=1 奇偶位为偶
JS 78 S=1 负号
JNP/IPO 7B P=0 奇偶位为奇
间接标志转移
指令格式 机器码 测试格式 如...则转移
JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于
JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于
JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于
JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于
JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于
JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于
JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于
JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于
无条件转移指令JMP
指令格式 执行操作 机器码 说明
段内直接短转移Jmp short (IP)←(IP)+8位位移量 EB 转移范围-128到+127字节
问题如下:
代码
Assembly code
DATAS SEGMENT Buf1 dw 0030h,3000h DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LDS BX,DWORD PTR BUF1 MOV [BX],1234H MOV AH,4CH INT 21H CODES ENDS END START
LDS BX,DWORD PTR BUF1
MOV [BX],1234H
请问LDS指令(书上解释指针送寄存器和DS)的原操作数什么情况下为BX?
作者: bravexplorer 发布时间: 2011-10-23
LDS指针送指定的寄存器和DS寄存器指令,就是将寻址到的存储单元的第一个原操作数(字)送16位寄存器,第二个原操作数(字)送DS寄存器。当操作的不是双字的,原操作数位为16位的时候
作者: mazhle 发布时间: 2011-10-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28