+ -
当前位置:首页 → 问答吧 → 汇编指令汇总,另附有问题(LDS指令用法)

汇编指令汇总,另附有问题(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

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

热门下载

更多