导航:首页 > 程序命令 > 汇编等待命令

汇编等待命令

发布时间:2022-04-24 03:41:07

1. AVR单片机asm("nop");什么意思,8M的话多少 时间

AVR单片机中
asm("nop");
这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。
nop是一个空等待汇编指令,这个指令执行时,单片机是什么也不做的,仅仅起一个时间延时作用。
对于AVR单片机来与,如果不分频,那么一个振荡周期就是一个指令周期,因此8M晶振时,其一个指令周期时间是1/8000000秒,即125纳秒。

2. 汇编语言程序指令知多少

备本参考手册好了

Intel Architecture Software Developer's Manual Vol 2-Instruction Set Ref.pdf

http://www.intel.com/design/pentium/manuals/24319101.PDF

3. 汇编语言中,怎么实现等待功能

不知道你是说的单片机里的还是微机原理的,两种情况指令不同。
微机原理的就用LOOP指令就可以了。
我给一个单片机的子程序吧,直接调用就行了,修改#后面的数就能修改延时时间了,不够的话可以再加一层D3:。。。。。
DELAY:MOV R0,#65H
D2: MOV R1,#65H
D1: DJNZ R1,D1
DJNZ R0,D2
RET

4. 汇编语言指令

8086汇编指令手册

一、数据传输指令

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
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-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN 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.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.

二、算术运算指令
———————————————————————————————————————
ADD 加法.
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII码调整.
DIV 无符号除法.
IDIV 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII码调整.
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令
———————————————————————————————————————
AND 与运算.
OR 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
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<OP2 )
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为零时转移.
4>中断指令
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 程序结束.

5. 汇编语言中的ret指令问题

ret返回的地址值从堆栈中获取,如果堆栈是空的,ret就找不到返回的地址了,所以会错误。

6. 汇编中的常见指令有哪些

汇编语言指令集
汇编指令是汇编语言中使用的一些操作符(如mov,inc,loop)和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
一、数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
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-255,即 0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )

2. 输入输出端口传送指令.
IN 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.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.
二、算术运算指令

ADD 加法.
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII码调整.
DIV 无符号除法.
IDIV 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII码调整.
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
三、逻辑运算指令

AND 与运算.
or 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
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<OP2 )
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为零时转移.
4>中断指令
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 程序结束.
七、处理机控制指令:
标志处理指令 CLC(进位位置0指令)
CMC(进位位求反指令)
STC(进位位置为1指令)
CLD(方向标志置1指令)
STD(方向标志位置1指令)
CLI(中断标志置0指令)
STI(中断标志置1指令)
NOP(无操作)
HLT(停机)
WAIT(等待)
ESC(换码)
LOCK(封锁)

7. 汇编语言中的DEC是什么意思

DEC( DECrement ) 减1指令

格式:DEC OPR //Byte/Word

执行操作:(OPR)<-(OPR-1) //除CF标志位,其余标志位都受影响。

指令使操作数的内容减1,然后再送回该操作数。该操作数可以是寄存器操作数、存储器操作数。

例如:一、dec自减函数

1.dec(i,n);//i,n:integer;n为自减量

相当于i:=i-n;

2.dec(i);//i:integer;

相当于i:=i-1;

例如:二、Dec是递减函数

i:=100;

dec(i);

i就变成99了,

如果是dec(i,30)的话,

那么i=100-30=70

(7)汇编等待命令扩展阅读:

数据传送指令

这部分指令包括通用数据传送指令MOV、条件传送指令CMOVcc、堆栈操作指令

PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交换指令XCHG/XLAT/BSWAP、地址或段描述符选择子传送指令LEA/LDS/LES/LFS/LGS/LSS等。

注意,CMOVcc不是一条具体的指令,而是一个指令簇,包括大量的指令,用于根据EFLAGS寄存器的某些位状态来决定是否执行指定的传送操作。

整数和逻辑运算指令

这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、

除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。

移位指令

这部分指令用于将寄存器或内存操作数移动指定的次数。包括逻辑左移指令SHL、逻辑右移指令SHR、算术左移指令SAL、算术右移指令SAR、循环左移指令ROL、循环右移指令ROR等。

位操作指令

这部分指令包括位测试指令BT、位测试并置位指令BTS、位测试并复位指令BTR、位测试并取反指令BTC、位向前扫描指令BSF、位向后扫描指令BSR等。

条件设置指令

这不是一条具体的指令,而是一个指令簇,包括大约30条指令,用于根据EFLAGS寄存器的某些位状态来设置一个8位的寄存器或者内存操作数。比如SETE/SETNE/SETGE等等。

控制转移指令

这部分包括无条件转移指令JMP、条件转移指令Jcc/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。

注意,Jcc是一个指令簇,包含了很多指令,用于根据EFLAGS寄存器的某些位状态来决定是否转移;INT n是软中断指令,n可以是0到255之间的数,用于指示中断向量号。

串操作指令

这部分指令用于对数据串进行操作,包括串传送指令MOVS、串比较指令CMPS、串扫描指令SCANS、串加载指令LODS、串保存指令STOS,这些指令可以有选择地使用REP/REPE/REPZ/REPNE和REPNZ的前缀以连续操作。

输入输出指令

这部分指令用于同外围设备交换数据,包括端口输入指令IN/INS、端口输出指令OUT/OUTS。

高级语言辅助指令

这部分指令为高级语言的编译器提供方便,包括创建栈帧的指令ENTER和释放栈帧的指令LEAVE。

控制和特权指令

这部分包括无操作指令NOP、停机指令HLT、等待指令WAIT/MWAIT、换码指令ESC、总线封锁指令LOCK、内存范围检查指令BOUND、全局描述符表操作指令LGDT/SGDT、中断描述符表操作指令LIDT/SIDT、局部描述符表操作指令LLDT/SLDT、

描述符段界限值加载指令LSR、描述符访问权读取指令LAR、任务寄存器操作指令LTR/STR、请求特权级调整指令ARPL、任务切换标志清零指令CLTS、控制寄存器和调试寄存器数据传送指令MOV、

高速缓存控制指令INVD/WBINVD/INVLPG、型号相关寄存器读取和写入指令RDMSR/WRMSR、处理器信息获取指令CPUID、时间戳读取指令RDTSC等。

浮点和多媒体指令

这部分指令用于加速浮点数据的运算,以及用于加速多媒体数据处理的单指令多数据(SIMD及其扩展SSEx)指令。这部分指令数据非常庞大,无法一一列举,请自行参考INTEL手册。

虚拟机扩展指令

这部分指令包括INVEPT/INVVPID/VMCALL/VMCLEAR/VMLAUNCH/VMRESUME/VMPTRLD/VMPTRST/VMREAD/VMWRITE/VMXOFF/VMON等。

网络——汇编语言(面向机器的程序设计语言)

8. 求汇编语言的所有指令

数据传送指令集
MOV
功能: 把源操作数送给目的操作数
语法: MOV 目的操作数,源操作数
格式: MOV r1,r2
MOV r,m
MOV m,r
MOV r,data

XCHG
功能: 交换两个操作数的数据
语法: XCHG
格式: XCHG r1,r2 XCHG m,r XCHG r,m

PUSH,POP
功能: 把操作数压入或取出堆栈
语法: PUSH 操作数 POP 操作数
格式: PUSH r PUSH M PUSH data POP r POP m

PUSHF,POPF,PUSHA,POPA
功能: 堆栈指令群
格式: PUSHF POPF PUSHA POPA

LEA,LDS,LES
功能: 取地址至寄存器
语法: LEA r,m LDS r,m LES r,m

XLAT(XLATB)
功能: 查表指令
语法: XLAT XLAT m
算数运算指令
ADD,ADC
功能: 加法指令
语法: ADD OP1,OP2 ADC OP1,OP2
格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data
影响标志: C,P,A,Z,S,O

SUB,SBB
功能:减法指令
语法: SUB OP1,OP2 SBB OP1,OP2
格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data
影响标志: C,P,A,Z,S,O

INC,DEC
功能: 把OP的值加一或减一
语法: INC OP DEC OP
格式: INC r/m DEC r/m
影响标志: P,A,Z,S,O

NEG
功能: 将OP的符号反相(取二进制补码)
语法: NEG OP
格式: NEG r/m
影响标志: C,P,A,Z,S,O
MUL,IMUL
功能: 乘法指令
语法: MUL OP IMUL OP
格式: MUL r/m IMUL r/m
影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV
功能:除法指令
语法: DIV OP IDIV OP
格式: DIV r/m IDIV r/m
CBW,CWD
功能: 有符号数扩展指令
语法: CBW CWD
AAA,AAS,AAM,AAD
功能: 非压BCD码运算调整指令
语法: AAA AAS AAM AAD
影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)

DAA,DAS
功能: 压缩BCD码调整指令
语法: DAA DAS
影响标志: C,P,A,Z,S
位运算指令集
AND,OR,XOR,NOT,TEST
功能: 执行BIT与BIT之间的逻辑运算
语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位
SHR,SHL,SAR,SAL
功能: 移位指令
语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL
影响标志: C,P,Z,S,O
ROR,ROL,RCR,RCL
功能: 循环移位指令
语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL
影响标志: C,P,Z,S,O
程序流程控制指令集
CLC,STC,CMC
功能: 设定进位标志
语法: CLC STC CMC
标志位: C
CLD,STD
功能: 设定方向标志
语法: CLD STD
标志位: D
CLI,STI
功能: 设定中断标志
语法: CLI STI
标志位: I
CMP
功能: 比较OP1与OP2的值
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
JMP
功能: 跳往指定地址执行
语法: JMP 地址
JXX
功能: 当特定条件成立则跳往指定地址执行
语法: JXX 地址
注:
A: ABOVE,当C=0,Z=0时成立
B: BELOW,当C=1时成立
C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
E: EQUAL,当Z=1时成立
G: GREATER(大于),当Z=0且S=0时成立
L: LESS(小于),当S不为零时成立
N: NOT(相反条件),需和其它符号配合使用
O: OVERFLOW,O=1时成立
P: PARITY,P=1时成立
PE: PARITY EVEN,P=1时成立
PO: PARITY ODD,P=0时成立
S: SIGN,S=1时成立
Z: ZERO,Z=1时成立
LOOP
功能: 循环指令集
语法: LOOP 地址
LOOPE(Z)
地址 LOOPNE(Z) 地址
标志位: 无
CALL,RET
功能: 子程序调用,返回指令
语法: CALL 地址 RET RET n
标志位: 无
INT,IRET
功能: 中断调用及返回指令
语法: INT n IRET
标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器
字符串操作指令集
MOVSB,MOVSW,MOVSD
功能: 字符串传送指令
语法: MOVSB MOVSW MOVSD
标志位: 无
CMPSB,CMPSW,CMPSD
功能: 字符串比较指令
语法: CMPSB CMPSW CMPSD
标志位: C,P,Z,S,O
SCASB,SCASW
功能: 字符串搜索指令
语法: SCASB SCASW
标志位: C,P,Z,S,O
LODSB,LODSW,STOSB,STOSW
功能: 字符串载入或存贮指令
语法: LODSB LODSW STOSB STOSW
标志位: 无
REP,REPE,REPNE
功能: 重复前缀指令集
语法: REP 指令S REPE 指令S REPNE 指令S
标志位: 依指令S而定

对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以更新。
1)数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。
数据传送指令类型 指 令 说 明
通用数据传送指令 MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)
累加器专用传送指令 IN(输入指令) 、OUT(输入指令)
地址传送指令 LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)
标志寄存器传送指令 LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)

2)算术指令:用来执行算术运算。
算术指令类型 指 令 说 明
加法指令 ADD(加法)、ADC(带进位加法)、INC(加1)
减法指令 SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)
乘法指令 MUL(无符号数乘法)、IMUL(带符号数乘法)
除法指令 DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)

3)逻辑指令:对字或字节执行逻辑运算。
逻辑指令类型 指 令 说 明
逻辑运算指令 AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)
移动指令 SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)

4)串处理指令:处理存放存储器里的数据串。
串处理指令类型 指 令 说 明
指 令 MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)

5)控制转移指令:用来控制程序的执行流程。
控制转移指令类型 指 令 说 明
无条件转移指令 JMP(段间和段内转移)
条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)
循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)
子程序指令 CALL(调用指令)、RET(返回指令)
中断指令 INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)

6)处理机控制指令:
处理机控制指令类型 指 令 说 明
标志处理指令 CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令)
其他处理机控制指令 NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)、LOCK(封锁)

参考:http://www.bilayu.com/

9. 汇编语言中ret和SJMP $有什么区别,为什么有些程序结束的时候是用SJMP $ 而有些时候是用RET呢

汇编语言中:
1 ret和SJMP $相同点: 都属于转移指令。
2 ret和SJMP $区别:
ret是子程序返回指令,放在子程序的结尾,当子程序执行完后,靠该指令返回主程序。
SJMP $ 是相对转移指令 是用在主程序中的,可以作为暂停。
等价于 LL: SJMP LL
就是又跳转到这条指令的本身,反复执行给指令,不再执行别的指令了。
相当于暂停 (或在这等待计算机的中断时间发生)

呵呵 满意 就选满意回答吧

10. 求汇编指令大全~

8086/8088指令系统
一、数据传送指令
1.通用数据传送指令
MOV(Move)传送
PUSH(Push onto the stack)进栈
POP(Pop from the stack)出栈
XCHG(Exchange)交换
.MOV 指令
格式为: MOV DST,SRC
执行的操作:(DST)<-(SRC)
.PUSH 进栈指令
格式为:PUSH SRC
执行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(SRC)
.POP 出栈指令
格式为:POP DST
执行的操作:(DST)<-((SP+1),(SP))
(SP)<-(SP)+2
.XCHG 交换指令
格式为:XCHG OPR1,OPR2
执行的操作:(OPR1)<-->(OPR2)
2.累加器专用传送指令
IN(Input) 输入
OUT(Output) 输出
XLAT(Translate) 换码
这组指令只限于使用累加器AX 或AL 传送信息.
.IN 输入指令
长格式为: IN AL,PORT(字节)
IN AX,PORT(字)
执行的操作: (AL)<-(PORT)(字节)
(AX)<-(PORT+1,PORT)(字)
短格式为: IN AL,DX(字节)
IN AX,DX(字)
执行的操作: AL<-((DX))(字节)
AX<-((DX)+1,DX)(字)
.OUT 输出指令
长格式为: OUT PORT,AL(字节)
OUT PORT,AX(字)
执行的操作: (PORT)<-(AL)(字节)
(PORT+1,PORT)<-(AX)(字)
短格式为: OUT DX,AL(字节)
OUT DX,AX(字)
执行的操作: ((DX))<-(AL)(字节)
((DX)+1,(DX))<-AX(字)
在IBM-PC 机里,外部设备最多可有65536个I/O 端口,端口(即外设的端口地址)为
0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此
时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定
端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到
DX 寄存器中(端口号可以从0000到0FFFFH),然后再用IN 或OUT 指令来传送信息.
.XLAT 换码指令
格式为: XLAT OPR
或: XLAT
执行的操作:(AL)<-((BX)+(AL))
3.有效地址送寄存器指令
LEA(Load effective address)有效地址送寄存器
LDS(Load DS with Pointer)指针送寄存器和DS
LES(Load ES with Pointer)指针送寄存器和ES
.LEA 有效地址送寄存器
格式为: LEA REG,SRC
执行的操作:(REG)<-SRC
指令把源操作数的有效地址送到指定的寄存器中.
.LDS 指针送寄存器和DS 指令
格式为: LDS REG,SRC
执行的操作:(REG)<-(SRC)
(DS)<-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及DS 寄存器中.该指令常指定
SI 寄存器.
.LES 指针送寄存器和ES 指令
格式为: LES REG,SRC
执行的操作: (REG)<-(SRC)
(ES)<-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及ES 寄存器中.该指令常指定
DI 寄存器.
4.标志寄存器传送指令
LAHF(Load AH with flags)标志送AH
SAHF(store AH into flags)AH 送标志寄存器
PUSHF(push the flags) 标志进栈
POPF(pop the flags) 标志出栈
.LAHF 标志送AH
格式为: LAHF
执行的操作:(AH)<-(PWS 的低字节)
.SAHF AH 送标志寄存器
格式为: SAHF
执行的操作:(PWS 的低字节)<-(AH)
.PUSHF 标志进栈
格式为: PUSHF
执行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
.POPF 标志出栈
格式为: POPF
执行的操作:(PWS)<-((SP)+1,(SP))
(SP)<-(SP+2)
二、算术指令
1.加法指令
ADD(add)加法
ADC(add with carry)带进位加法
INC(increment)加1
.ADD 加法指令
格式: ADD DST,SRC
执行的操作:(DST)<-(SRC)+(DST)
.ADC 带进位加法指令
格式: ADC DST,SRC
执行的操作:(DST)<-(SRC)+(DST)+CF
.ADD 加1指令
格式: INC OPR
执行的操作:(OPR)<-(OPR)+1
2.减法指令
SUB(subtract)减法
SBB(subtract with borrow)带借位减法
DEC(Decrement)减1
NEG(Negate)求补
CMP(Compare)比较
.SUB 减法指令
格式: SUB DST,SRC
执行的操作:(DST)<-(DST)-(SRC)
.SBB 带借位减法指令
格式: SBB DST,SRC
执行的操作:(DST)<-(DST)-(SRC)-CF
.DEC 减1指令
格式: DEC OPR
执行的操作:(OPR)<-(OPR)-1
.NEG 求补指令
格式: NEG OPR
执行的操作:(OPR)<- -(OPR)
.CMP 比较指令
格式: CMP OPR1,OPR2
执行的操作:(OPR1)-(OPR2)
该指令与SUB 指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半
球.
3.乘法指令
MUL(Unsigned Multiple)无符号数乘法
IMUL(Signed Multiple)带符号数乘法
.MUL 无符号数乘法指令
格式: MUL SRC
执行的操作:
字节操作数:(AX)<-(AL)*(SRC)
字操作数:(DX,AX)<-(AX)*(SRC)
.IMUL 带符号数乘法指令
格式: IMUL SRC
执行的操作:与MUL 相同,但必须是带符号数,而MUL 是无符号数.
4.除法指令
DIV(Unsigned divide)无符号数除法
IDIV(Signed divide)带符号数除法
CBW(Convert byte to word)字节转换为字
CWD(Contert word to double word)字转换为双字
.DIV 无符号数除法指令
格式: DIV SRC
执行的操作:
字节操作:(AL)<-(AX)/(SRC)的商
(AH)<-(AX)/(SRC)的余数
字操作: (AX)<-(DX,AX)/(SRC)的商
(AX)<-(DX,AX)/(SRC)的余数
.IDIV 带符号数除法指令
格式: DIV SRC
执行的操作:与DIV 相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号
与被除数的符号相同.
.CBW 字节转换为字指令
格式: CBW
执行的操作:AL 的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最
高有效位为1,则(AH)=0FFH
.CWD 字转换为双字指令
格式: CWD
执行的操作:AX 的内容符号扩展到DX.即如(AX) 的最高有效位为0, 则(DX)=0;否则
(DX)=0FFFFH.
这两条指令都不影响条件码.
三、逻辑指令
1.逻辑运算指令
AND(and) 逻辑与
OR(or) 逻辑或
NOT(not) 逻辑非
XOR(exclusive or)异或
TEST(test) 测试
.AND 逻辑与指令
格式: AND DST,SRC
执行的操作:(DST)<-(DST)^(SRC)
.OR 逻辑或指令
格式: OR DST,SRC
执行的操作:(DST)<-(DST)V(SRC)
.NOT 逻辑非指令
格式: NOT OPR
执行的操作:(OPR)<-(OPR)
.XOR 异或指令
格式: XOR DST,SRC
执行的操作:(DST)<-(DST)V(SRC)
.TEST 测试指令
格式: TEST OPR1,OPR2
执行的操作:(DST)^(SRC)
两个操作数相与的结果不保存,只根据其特征置条件码
2.移位指令
SHL(shift logical left) 逻辑左移
SAL(shift arithmetic left) 算术左移
SHR(shift logical right) 逻辑右移
SAR(shift arithmetic right) 算术右移
ROL(Rotate left) 循环左移
ROR(Rotate right) 循环右移
RCL(Rotate left through carry) 带进位循环左移
RCR(Rotate right through carry) 带进位循环右移
格式: SHL OPR,CNT(其余的类似)
其中OPR 可以是除立即数以外的任何寻址方式.移位次数由CNT 决定,CNT 可以是1或CL.
循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作.
其中算术移位指令适用于带符号数运算,SAL 用来乘2,SAR 用来除以2;而逻辑移位指令则用
来无符号数运算,SHL 用来乘2,SHR 用来除以2.
四、串处理指令
1.与REP 相配合工作的MOVS,STOS 和LODS 指令
.REP 重复串操作直到(CX)=0为上
格式: REP string primitive
其中String Primitive 可为MOVS,LODS 或STOS 指令
执行的操作:
1)如(CX)=0则退出REP,否则往下执行.
2)(CX)<-(CX)-1
3)执行其中的串操作
4)重复1)~3)
.MOVS 串传送指令
格式:可有三种
MOVS DST,SRC
MOVSB(字节)
MOVSW(字)
其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是
字节操作,例如:
MOVS ES:BYTE PTR[DI],DS:[SI]
执行的操作:
1)((DI))<-((SI))
2)字节操作:
(SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1
当方向标志DF=0时用+,当方向标志DF=1时用-
3)字操作:
(SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2
当方向标志DF=0时用+,当方向标志DF=1时用-
该指令不影响条件码.
.CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
.STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量.
.STOS 存入串指令
格式: STOS DST
STOSB(字节)
STOSW(字)
执行的操作:
字节操作:((DI))<-(AL),(DI)<-(DI)+-1
字操作: ((DI))<-(AX),(DI)<-(DI)+-2
该指令把AL 或AX 的内容存入由(DI)指定的附加段的某单元中,并根据DF 的值及数据类型
修改DI 的内容,当它与REP 联用时,可把AL 或AX 的内容存入一个长度为(CX)的缓冲区中.
.LODS 从串取指令
格式: LODS SRC
LODSB
LODSW
执行的操作:
字节操作:(AL)<-((SI)),(SI)<-(SI)+-1
字操作: (AX)<-((SI)),(SI)<-(SI)+-2
该指令把由(SI)指定的数据段中某单元的内容送到AL 或AX 中,并根据方向标志及数据类型
修改SI 的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.
一般说来,该指令不和REP 联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使
用本指令.
2.与REPE/REPZ 和REPNZ/REPNE 联合工作的CMPS 和SCAS 指令
.REPE/REPZ 当相等/为零时重复串操作
格式: REPE(或REPZ) String Primitive
其中String Primitive 可为CMPS 或SCAS 指令.
执行的操作:
1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行
2)(CX)<-(CX)-1
3)执行其后的串指令
4)重复1)~3)
.REPNE/REPNZ 当不相等/不为零时重复串操作
格式: REPNE(或REPNZ) String Primitive
其中String Primitive 可为CMPS 或SCAS 指令
执行的操作:
除退出条件(CX=0)或ZF=1外,其他操作与REPE 完全相同.
.CMPS 串比较指令
格式: CMP SRC,DST
CMPSB
CMPSW
执行的操作:
1)((SI))-((DI))
2)字节操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1
字操作: (SI)<-(SI)+-2,(DI)<-(DI)+-2
指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)
相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS 指令的规定相同.
.SCAS 串扫描指令
格式: SCAS DST
SCASB
SCASW
执行的操作:
字节操作:(AL)-((DI)),(DI)<-(DI)+-1
字操作: (AL)-((DI)),(DI)<-(DI)+-2
该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存
结果,只根据结果置条件码.指令的其他特性和MOVS 的规定相同.
五、控制转移指令
1.无条件转移指令
.JMP(jmp) 跳转指令
1)段内直接短转移
格式:JMP SHORT OPR
执行的操作:(IP)<-(IP)+8位位移量
2)段内直接近转移
格式:JMP NEAR PTR OPR
执行的操作:(IP)<-(IP)+16位位移量
3)段内间接转移
格式:JMP WORD PTR OPR
执行的操作:(IP)<-(EA)
4)段间直接(远)转移
格式:JMP FAR PTR OPR
执行的操作:(IP)<-OPR 的段内偏移地址
(CS)<-OPR 所在段的段地址
5)段间间接转移
格式:JMP DWORD PTR OPR
执行的操作:(IP)<-(EA)
(CS)<-(EA+2)
2.条件转移指令
1)根据单个条件标志的设置情况转移
.JZ(或JE)(Jump if zero,or equal) 结果为零(或相等)则转移
格式:JE(或JZ) OPR
测试条件:ZF=1
.JNZ(或JNE)(Jump if not zero,or not equal) 结果不为零(或不相等)则转移
格式:JNZ(或JNE) OPR
测试条件:ZF=0
.JS(Jump if sign) 结果为负则转移
格式: JS OPR
测试条件:SF=1
.JNS(Jump if not sign) 结果为正则转移
格式:JNS OPR
测试条件:SF=0
.JO(Jump if overflow) 溢出则转移
格式: JO OPR
测试条件:OF=1
.JNO(Jump if not overflow) 不溢出则转移
格式: JNO OPR
测试条件:OF=0
.JP(或JPE)(Jump if parity,or parity even) 奇偶位为1则转移
格式: JP OPR
测试条件:PF=1
.JNP(或JPO)(Jump if not parity,or parity odd) 奇偶位为0则转移
格式: JNP(或JPO) OPR
测试条件:PF=0
.JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低于,或者不高于或等于,或进位
位为1则转移
格式:JB(或JNAE,JC) OPR
测试条件:CF=1
.JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低于,或者高于或者等于,
或进位位为0则转移
格式:JNB(或JAE,JNC) OPR
测试条件:CF=0
2)比较两个无符号数,并根据比较的结果转移
.JB(或JNAE,JC)
格式:同上
.JNB(或JAE,JNC)
格式:同上
.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于则转移
格式:JBE(或JNA) OPR
测试条件:CFVZF=1
.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于则转移
格式:JNBE(或JA) OPR
测试条件:CFVZF=0
3)比较两个带符号数,并根据比较的结果转移
.JL(或LNGE)(Jump if less,or not greater or equal) 小于,或者不大于或者等于则转移
格式:JL(或JNGE) OPR
测试条件:SFVOF=1
.JNL(或JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于则转移
格式:JNL(或JGE) OPR
测试条件:SFVOF=0
.JLE(或JNG)(Jump if less or equal,or not greater) 小于或等于,或者不大于则转移
格式:JLE(或JNG) OPR
测试条件:(SFVOF)VZF=1
.JNLE(或JG)(Jump if not less or equal,or greater) 不小于或等于,或者大于则转移
格式:JNLE(或JG) OPR
测试条件:(SFVOF)VZF=0
4)测试CX 的值为0则转移指令
.JCXZ(Jump if CX register is zero) CX 寄存器的内容为零则转移
格式:JCXZ OPR
测试条件:(CX)=0
注:条件转移全为8位短跳!
3.循环指令
.LOOP 循环指令
格式: LOOP OPR
测试条件:(CX)<>0
.LOOPZ/LOOPE 当为零或相等时循环指令
格式: LOOPZ(或LOOPE) OPR
测试条件:(CX)<>0且ZF=1
.LOOPNZ/LOOPNE 当不为零或不相等时循环指令
格式: LOOPNZ(或LOOPNE) OPR
测试条件:(CX)<>0且ZF=0
这三条指令的步骤是:
1)(CX)<-(CX)-1
2)检查是否满足测试条件,如满足则(IP)<-(IP)+D8的符号扩充.
4.子程序
.CALL 调用指令
.RET 返回指令
5.中断
.INT 指令
格式: INT TYPE
或INT
执行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
(SP)<-(SP)-2
((SP)+1,(SP))<-(CS)
(SP)<-(SP)-2
((SP)+1,(SP))<-(IP)
(IP)<-(TYPE*4)
(CS)<-(TYPE*4+2)
.INTO 若溢出则中断
执行的操作:若OF=1则:
(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
(SP)<-(SP)-2
((SP)+1,(SP))<-(CS)
(SP)<-(SP)-2
((SP)+1,(SP))<-(IP)
(IP)<-(10H)
(CS)<-(12H)
.IRET 从中断返回指令
格式: IRET
执行的操作:(IP)<-((SP)+1,(SP))
(SP)<-(SP)+2
(CS)<-((SP)+1,(SP))
(SP)<-(SP)+2
(PSW)<-((SP)+1,(SP))
(SP)<-(SP)+2
六、处理机控制指令
1.标志处理指令
.CLC 进位位置0指令(Clear carry)CF<-0
.CMC 进位位求反指令(Complement carry)CF<-CF
.STC 进位位置1指令(Set carry)CF<-1
.CLD 方向标志置0指令(Clear direction)DF<-0
.STD 方向标志置1指令(Set direction)DF<-1
.CLI 中断标志置0指令(Clear interrupt)IF<-0
.STI 中断标志置1指令(Set interrupt)IF<-0
2.其他处理机控制指令
NOP(No Opreation) 无操作
HLT(Halt) 停机
WAIT(Wait) 等待
ESC(Escape) 换码
LOCK(Lock) 封锁
这些指令可以控制处理机状态.这们都不影响条件码.
.NOP 无操作指令
该指令不执行任何操作,其机器码占有一个字节,在调试程序时往往用这条指令占有一定
的存储单元,以便在正式运行时用其他指令取代.
.HLT 停机指令
该指令可使机器暂停工作,使处理机处于停机状态以便等待一次外部中断到来,中断结束
后可继续执行下面的程序.
.WAIT 等待指令
该指令使处理机处于空转状态,它也可以用来等待外部中断的发生,但中断结束后仍返回
WAIT 指令继续德行.
.ESC 换码指令
格式ESC mem
其中mem 指出一个存储单元,ESC 指令把该存储单元的内容送到数据总线去.当然ESC 指令
不允许使用立即数和寄存器寻址方式.这条指令在使用协处理机(Coprocessor)执行某些操作
时,可从存储器指得指令或操作数.协处理机(如8087)则是为了提高速度而可以选配的硬件.
.LOCK 封锁指令
该指令是一种前缀,它可与其他指令联合,用来维持总线的锁存信号直到与其联合的指令
执行完为止.当CPU 与其他处理机协同工作时,该指令可避免破坏有用信息.

阅读全文

与汇编等待命令相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:569
python员工信息登记表 浏览:369
高中美术pdf 浏览:153
java实现排列 浏览:505
javavector的用法 浏览:974
osi实现加密的三层 浏览:225
大众宝来原厂中控如何安装app 浏览:906
linux内核根文件系统 浏览:235
3d的命令面板不见了 浏览:520
武汉理工大学服务器ip地址 浏览:141
亚马逊云服务器登录 浏览:517
安卓手机如何进行文件处理 浏览:65
mysql执行系统命令 浏览:923
php支持curlhttps 浏览:136
新预算法责任 浏览:437
服务器如何处理5万人同时在线 浏览:244
哈夫曼编码数据压缩 浏览:417
锁定服务器是什么意思 浏览:378
场景检测算法 浏览:610
解压手机软件触屏 浏览:341