微机原理汇编常用指令

合集下载

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

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,04SHL 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(封锁)。

微机原理-常用指令用法

微机原理-常用指令用法

微机原理-常⽤指令⽤法序号指令功能和特点例程1 例程2 例程3 1 MOV 参与传送的操作数有:通⽤寄存器,段寄存器,存储单元,⽴即数四类。

有有互相之间只要不违背以下原则即可进⾏传送:1.源,⽬的操作数长度⼀致2.源,⽬的操作数不能同为存储单元3.CS不能作为⽬的操作数4.段寄存器只能通过通⽤寄存器或存储单元进⾏赋值。

5.⽴即数不能作为⽬的操作数。

2 PUSH ⼀定是字操作(不能PUSH字节)有PUSH AX,PUSH DS,PUSH [0000H] ;【POP对等】SP <‐ SP‐2,字存⼊SP指向的地址(⾼位在⾼地址)操作数可以为通⽤寄存器,段寄存器或存储单元,CS可PUSH不可POP3 POP 与PUSH对等4 XCHG Xchg dst,src可在通⽤寄存器间,通⽤寄存器和存储单元间进⾏。

不能⽤段寄存器和⽴即数。

XCHG [1200H],DXXCHG AL,CL5 XLAT 直接写出XLAT就⾏,在调⽤该指令前,需将BX初始化为数据表的⾸地址,AL初始化为希望取得的数据在数据表中的序号。

在调⽤该指令后,AL中的内容被赋值为DS:[BX][AL]的内容。

6 LEA LEA BX,1000H[SI],执⾏后BX = SI+1000H有LEA BX,TABLEMOV BX,OFFSET TABLE,以上两条等价7 LDS 指针送寄存器和DS指令LDS dst,src将SRC指定的连续4个存储单元的内容传送到DS和DST指向的寄存器,⾼字送到DS,低字送到DST假设DS=3200H,(33550H)=3A78H,(33552H)=1998HLDS SI,[1550H]后,SI = 3A78H,DS = 1998H8 LES 类同LDS,不同的是DS改成了ES9 SAHF 将AH的内容送标志寄存器的低8位10 LAHF 把标志寄存器的低8位送⼊AH11 PUSHF 将16位标志寄存器内容压⼊堆栈12 POPF 从堆栈弹出字数据送⼈标志寄存器13 ADD Dst可以为存储单元或通⽤寄存器有 Src可为存储单元,通⽤寄存器或⽴即数,不能同时为存储单元Add ax,1234hAdd [1234h],ax14 ADC Adc dst,srcDst = dst+src+cf15 INC Inc dstDst为通⽤寄存器或存储单元影响OF,SF,ZF,AF,PF,但不影响CF。

微机原理指令小结

微机原理指令小结

8086CPU指令小结所有指令:(1)立即数不能作为目的操作数。

(2)不能在2个存储单元之间直接进行操作(串操作除外)。

(3)MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。

(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。

(5)CS 、IP不能直接作为操作数。

(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。

一、传送指令(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令和标志传送指令。

(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。

(3)操作数表示方法:立即数——data,存储器单元地址——mem,寄存器——reg,段寄存器——segreg。

1. 通用传送指令:完成数据传送(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作数OPRD1]←[源操作数OPRD2] (2)源OPRD2:data、mem、reg、segreg。

(3)目的OPRD1:mem、reg、segreg。

(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS 、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV 指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。

(5)8位/16位操作。

2. 堆栈操作指令:将数据压入/弹出堆栈(1)指令格式:入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。

;SP =SP-1,[SP]=操作数高8位;SP =SP-1,[SP]= 操作数低8位。

出栈:POP OPRD;先将数据弹出堆栈,然后修改堆栈指针SP+2。

;(操作数低8位)←[SP],SP =SP+1;(操作数高8位)←[SP],SP =SP+1。

(2)操作数:mem、reg、segreg。

操作数不能是立即数data。

riscv汇编语言指令

riscv汇编语言指令

riscv汇编语言指令
RISC-V(精简指令集计算机)是一种基于开放标准的指令集架
构(ISA),它的汇编语言指令集包括以下几类指令:
1. R 型指令,R 型指令用于执行寄存器之间的操作,包括算术
运算和逻辑运算。

例如,add、sub、and、or、xor 等。

2. I 型指令,I 型指令用于执行立即数和寄存器之间的操作,
包括加载、存储和分支操作。

例如,addi、lw、sw、beq 等。

3. S 型指令,S 型指令用于执行立即数偏移量和寄存器之间的
存储操作。

例如,sb、sh、sw。

4. B 型指令,B 型指令用于执行分支操作。

例如,beq、bne、blt、bge。

5. U 型指令,U 型指令用于执行无条件跳转和加载立即数操作。

例如,lui、auipc。

6. J 型指令,J 型指令用于执行无条件跳转操作。

例如,jal。

以上是 RISC-V 汇编语言指令的一些基本类型,每种类型的指令都有特定的操作码和功能码,通过这些指令可以完成对寄存器、内存和控制流的操作。

除了基本指令外,RISC-V 还支持特权指令、浮点指令和原子操作等扩展指令集,以满足不同应用领域的需求。

希望这些信息能够帮助你对 RISC-V 汇编语言指令有一个初步的了解。

微机原理指令汇总

微机原理指令汇总

我现将指令系统中各种助记符得英文全名写出来,各种助记符得记忆就会变得很简单o(∩_∩)o、、、在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有得I/O指令都使用这一寄存器与外界设备传送数据、BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)与串处理指令中用作隐含得计数器、DH&DL=DX(data):数据寄存器,常用于数据传递。

她们得特点就是,这4个16位得寄存器可以分为高8位: AH, BH, CH, DH、以及低八位:AL,BL,CL,DL。

这2组8位寄存器可以分别寻址,并单独使用。

另一组就是指针寄存器与变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前得堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS得一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目得变址寄存器,可用来存放相对于ES 段之目得变址指针。

指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)段寄存器(Segment Register)为了运用所有得内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。

微机原理8086汇编语言

微机原理8086汇编语言

微机原理8086汇编语言微机原理和8086汇编语言是计算机科学与技术领域中的重要基础知识,对于理解计算机的运行原理和编程开发具有关键作用。

本文将全面介绍微机原理和8086汇编语言的基本概念、功能特点以及应用实践。

一、微机原理概述微机原理是指微型计算机的构成、工作原理、体系结构和外围设备等的基本原理。

微机由中央处理器(CPU)、存储器和输入输出设备等组成,其内部实现了数据的存储和处理,并能够与外部环境进行交互。

微机原理的研究与应用对于计算机硬件的设计和控制至关重要。

二、8086汇编语言介绍8086汇编语言是在微机原理基础上发展起来的一种低级程序设计语言。

它以机器指令的形式直接对CPU发出控制命令,实现数据处理和操作。

8086汇编语言具有直观、高效的特点,可以对计算机内部各种硬件资源进行精细控制,实现复杂的算法和功能。

三、8086汇编语言的基本语法8086汇编语言的基本语法包括指令、寻址方式和操作数等。

指令通常由操作码和操作数组成,用于执行特定的操作。

寻址方式指定操作数在内存中的位置,可以是直接寻址、寄存器间接寻址、立即数寻址等多种方式。

操作数表示要进行操作的数据,可以是寄存器、内存单元或立即数。

四、8086汇编语言的常用指令8086汇编语言提供了丰富的指令集,包括数据传输指令、算术运算指令、逻辑运算指令、条件转移指令、无条件转移指令等。

通过这些指令的组合和调用,可以实现各种复杂的功能和处理需求。

五、8086汇编语言的应用实践8086汇编语言广泛应用于嵌入式系统设计、驱动程序开发、操作系统编程以及性能优化等领域。

在嵌入式领域,汇编语言可以直接操作硬件资源,实现高效的数据处理和控制;在操作系统编程中,汇编语言可以直接访问操作系统内核,实现底层功能的扩展和优化。

六、8086汇编语言的优势与不足8086汇编语言具有高效、灵活的优势,可以直接操作硬件资源和内存,实现高性能的程序。

然而,汇编语言的开发和调试困难,可读性低,维护成本高,对程序员的要求较高。

汇编写循环指令

汇编写循环指令汇编语言中的循环指令是编程过程中经常用到的重要指令之一。

通过循环指令,程序可以重复执行一段代码块,实现特定的功能。

本文将介绍常见的汇编循环指令及其使用方法。

一、汇编语言中的循环指令在汇编语言中,通常有两种类型的循环指令:有条件循环和无条件循环。

有条件循环根据特定条件来判断是否继续循环执行,而无条件循环则无需条件,每次都会执行。

1. 有条件循环指令有条件循环指令主要有以下几种:(1)Jmp指令:无条件跳转指令,可以用于循环体的结尾,使程序跳转到循环的开始位置,实现循环执行。

(2)Je、Jne指令:用于判断两个数是否相等,其中Je指令表示相等时跳转,Jne指令表示不相等时跳转。

(3)Jg、Jge、Jl、Jle指令:用于判断两个数的大小关系,其中Jg 指令表示大于时跳转,Jge指令表示大于等于时跳转,Jl指令表示小于时跳转,Jle指令表示小于等于时跳转。

2. 无条件循环指令无条件循环指令主要有以下几种:(1)Jcxz指令:判断寄存器Cx是否为0,如果为0,则跳转到指定位置。

(2)Loop指令:循环指令,根据寄存器Cx或者寄存器Al的值来决定是否跳转到指定位置。

二、汇编循环指令的使用方法在使用汇编循环指令时,首先需要设置循环计数器,一般情况下使用寄存器Cx或者寄存器Al作为循环计数器。

然后在循环体开始之前,需要设置循环的终止条件,并将循环计数器赋初值。

下面以用寄存器Cx作为循环计数器为例,介绍汇编循环指令的使用方法:```MOV CX, 10 ; 将10赋值给寄存器Cx,表示循环10次LOOP_START: ; 循环的开始标签; 循环体代码LOOP LOOP_START ; 根据Cx的值判断是否继续循环,继续跳转到LOOP_START标签```以上代码中,通过MOV指令将10赋值给寄存器Cx,表示需要循环10次。

接着使用LOOP_START标签来标记循环的开始位置,循环体代码写在标签下方。

常用的汇编指令与技巧(收藏)

常⽤的汇编指令与技巧(收藏)1.数据传送指令:movmove r1,r2 /*r1=r2*/move r1,#4096 /*r1=4096*/2.⼤范围的地址读取指令:ldrldr r1,=0x123456789 /*r1=0x123456789*/ldr r1,=label /*获取绝对地址,即label的地址*/label: ……3.内存访问指令(当ldr后⾯没有=号时为内存读取指令)读取指令:ldrldr r1 ,[r2,#4] /*将内存地址为r2+4的数据读取到r1中,相当于C语⾔中的*操作*/ldr r1,[r2],#4 /*将内存地址为r2的数据读取到r1中,再将地址加4,r2=r2+4*/ldr pc,_irq /*pc=*(_irq)将标号中的内容放⼊pc中_irq: .word do_swi存储指令:strstr r1 ,[r2,#4] /*将r1的值存⼊地址为r2+4的内存中*/str r1,[r2],#4 /*将r1的值存⼊地址为r2的内存中,再将地址加4,r2=r2+4*/4.批量内存访问指令ldm,stm格式:ldm {cond} <addresing_mode> <rn> {!} <register list> {^} stm{cond} <addresing_mode> <rn> {!} <register list> {^}格式说明:1){cond}:表⽰指令的执⾏条件,根据cpsr寄存器中的条件标志位决定是否执⾏该条指令,每条ARM指令包含4bit的条件码域,可以定义16个执⾏条件,具体如下表:2)<addresing_mode>表⽰地址变化模式,具体如下:3)<rn> 中保存内存的地址,如果后⾯加上!,指令执⾏完成后,rn的值会更新,等于下⼀个内存的地址,否则保持初始值。

微机原理与接口技术除法指令可编辑全文


X*Y,结果在DX:AX中
将乘积存在BX:CX中
将符号扩展后的Z加到 BX:CX中的乘积中去
• SUB CX, 540; • SBB BX, 0; • MOV AX, V; • CWD; • SUB AX, CX; • SBB DX, BX; • MOV BX,X • IDIV BX;
从BX:CX中减去540
格式: IDIV SRC
操作与DIV类似。商及余数均为有符号数,且余数符 号总是与被除数符号相同。
注意: 对于DIV/IDIV指令 • AX(DX:AX)为隐含的被除数寄存器。 • AL(AX)为隐含的商寄存器。 • AH(DX)为隐含的余数寄存器。 • SRC不能为立即数。 • 对所有标志位均无定义。
微机原理与接口技术除法指令
✓进行除法时:16位/8位→8位商,8位余数 32位/16位→16位商,16位余数
✓对被除数、商及余数存放有如下规定:
被除数
商 余数
16位/8位 AX
AL AH 字节操作
32位/16位 DX:AX AX DX 字操作
4.1 除法指令——无符号数的除法指令
格式: DIV SRC
操作:字节操作 (AL) (AX) / (SRC) 的商
字操作
(AH) (AX) / (SRC) 的余数 (AX) (DX, AX) / (SRC) 的商
(DX) (DX, AX) / (SRC) 的余数
例: DIV CL DIV WORD PTR[BX]
4.2 除法指令——有符号数的除法指令
最高位 CF
最低位 0
(a)算术/逻辑左移SAL/SHL
最高位 CF
最低位
(b)算术右移SAR
最高位
CF 0

汇编语言命令大全

1 汇编语言命令大全汇编命令大全<---->MOV(MOVe)传送指令P28 PUSH 入栈指令P32POP 出栈指令P33XCHG(eXCHanG)交换指令P34XLAT(TRANSLATE)换码指令P34LEA (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)标志进栈指令P36POPF(POP the Flags)标志出栈指令P37ADD 加法指令P38ADC 带进位加法指令P39INC 加1指令P39SUB(SUBtract)不带借位的减法指令P40SBB(SuVtrach with borrow)带借位的减法指令P40DEC(DECrement)减1指领P41NEG(NEGate)求补指令P41CMP(CoMPare)比较指令P42MUL(unsinged MULtiple)无符号数乘法指令P46IMUL(sIgned MUL tiple)有符号数乘法指令P46DIV(unsigned DIVide)无符号数除法指令P48IDIV(sIgned DIVide)有符号数除法指令P48CBW(Count Byte to Word)字节转换为字指令P50CWD(Count Word to Doble word)字转换为双字指令P50 DAA 压缩的BCD码加法十进制调整指令P53DAS 压缩的BCD码减法十进制调整指令P53AAA 非压缩的BCD码加法十进制调整指令P54AAS 非压缩的BCD码加法十进制调整指令P54AND 逻辑与指令P54OR 逻辑或指令P55XOR 逻辑异或指令P56NOT 逻辑非指令P56TEST 测试指令P57SHL(SHift logical Letf)逻辑左移指令P57SHR(SHift logical Right)逻辑右移指令P57ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移P58 RCR(Rotate Right through Carry)带进位循环左移P58 MOVS(MOVe String)串传送指令P58STOS(STOre into String)存入串指令P60LODS(LOad from string)从串取指令P60REP(REPeat)重复操作前缀P61CLD(CLear Direction flag)清除方向标志指令P61STD(SeT Direction flag)设置方向标志指令P61CMPS(CoMPare String)串比较指令P62SCAS(SCAn String)串扫描指令P63REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令P65OUT(OUTput)输出指令P65JMP(JuMP)无条件转移指令P66JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令P70LOOPNZ/LOOPNE 不为零/不相等时循环指令P70CALL 子程序调用指令P71RET(RETun)子程序返回指令P72CLC(CLear Carry)进位位置0指令P77CMC(CoMplement Carry)进位位求反指令P77SRC(SeT Carry)进位位置1指令P77NOP(No OPeretion)无操作指令P77HLT(HaLT)停机指令P77OFFSET 返回偏移地址P85SEG 返回段地址P85EQU(=) 等值语句P90PURGE 解除语句P91DUP 操作数字段用复制操作符P93SEGMENT,ENDS 段定义指令P95ASSUME 段地址分配指令P95ORG 起始偏移地址设置指令P96$ 地址计数器的当前值P97PROC,ENDP 过程定义语句P97NAME,TITLE,END 程序开始结束语句P98MACRO,ENDM 宏定义指令P99---------------------------------------------------------------------------------- 作者:wutoyou-- 发布时间:2004-2-3 14:42:45--段内直接短跳转JMP SHORT OPR段内直接近转移JMP NEAR PTR OPR段内间接转移JMP WORD PTR OPR 段间直接转移JMP FAR PTR OPR段间间接转移JMP DWORD PTR OPRJZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1) ADD 加法指令
汇编格式:ADD 目的操作数,源操作数
执行的操作:(目的操作数)←源操作数+目的操作数
2) ADC 带进位加法指令
汇编格式:ADC 目的操作数,源操作数
执行的操作:(目的操作数)←源操作数+目的操作数+CF
3) INC 增量指令
汇编格式:INC 操作数
执行的操作:(操作数)←操作数+1
PS:以上三条指令都可作字或字节运算,除INC指令不影响CF标志位外,其他标志位都受指令操作结果的影响。

4) SUB 减法指令
汇编格式:SUB 目的操作数,源操作数
执行的操作:(目的操作数)←目的操作数-源操作数
5) SBB 带借位减法指令
汇编格式:SBB 目的操作数,源操作数
执行的操作:(目的操作数)←目的操作数-源操作数-CF
6) DEC 减量指令
汇编格式:DEC 操作数
执行的操作:(操作数)←操作数-1
7) NEG 求补指令
汇编格式:NEG 操作数
执行的操作:(操作数)←0-操作数
8) CMP比较指令
汇编格式:CMP 目的操作数,源操作数
执行的操作:目的操作数-源操作数。

PS:以上五条指令都可作字或字节运算。

另外,除DEC指令不影响CF标志位外,其他指令都对标志位有影响。

9) MUL 无符号数乘法指令
汇编格式:MUL 源操作数
执行的操作:假设为字节操作(AX)←(AL)×源操作数
假设为字操作(DX), (AX)←(AX)×源操作数
10) IMUL 有符号数乘法指令
汇编格式:IMUL 源操作数
执行的操作:与MUL一样,只是处理的数据是有符号数,而MUL处理的数据是无符号数。

11) DIV 无符号数除法指令
汇编格式:DIV 源操作数
执行的操作:假设为字节操作:(AL)←(AX)/源操作数的商
(AH)←(AX)/源操作数的余数
假设为字操作:(AX)←(DX、AX)/源操作数的商
(DX)←(DX、AX)/源操作数的余数
商和余数均为无符号数。

12) IDIV 有符号数除法指令
汇编格式:IDIV 源操作数
执行的操作:与DIV一样,只是操作数是有符号数,商和余数均为有符号数,余数符号同被除数符号。

1) AND逻辑与指令
汇编格式:AND 目的操作数,源操作数
执行的操作:(寻址到的目的地址)←目的操作数∧源操作数
2) OR逻辑或指令
汇编格式:OR 目的操作数,源操作数
执行的操作:(寻址到的目的地址)←目的操作数∨源操作数
3) XOR逻辑异或指令
汇编格式:XOR 目的操作数,源操作数
执行的操作:(寻址到的目的地址)←目的操作数∨源操作数
4) TEST测试指令
汇编格式:TEST 目的操作数,源操作数
执行的操作:目的操作数∧源操作数
5) NOT逻辑非指令
汇编格式:NOT 目的操作数
执行的操作:(寻址到的地址)←(操作数)
1) 逻辑移位指令
● SHL逻辑左移指令
汇编格式:SHL 除立即数及段存放器之外的操作数,移位次数
● SHR逻辑右移指令
汇编格式:SHR 除立即数及存放器之外的操作数,移位次数
2) 算术移位指令
● SAL算术左移指令
汇编格式:SAL 除立即数及段存放器之外的操作数,移位次数
● SAR算术右移指令
汇编格式:SAR 除立即数及段存放器之外的操作数,移位次数
3) 小循环移位指令
● ROL循环左移指令
汇编格式:ROL 除立即数和段存放器之外的操作数,移位次数
● ROR循环右移指令
汇编指令:ROR 除立即数和段存放器之外的操作数,移位次数
控制转移指令
1. 无条件转移指令JMP
JMP指令的功能就是无条件地转移到指令指定的地址去执行从该地址开始的指令序列。

汇编格式:JMP SHORT 转移地址标号
以上是部分汇编指令,亲自打的。

最后应周骏康的要求,补充一下存放器注意部分:
通用存放器
●AX→〔AH,AL〕●AX:累加器。

多用于存放中间运算结果。

●BX→〔BH,BL〕●BX:基址存放器。

在间接寻址中用于存放基地址;
●CX→〔CH,CL〕●CX:计数存放器。

用于在循环或串操作指令中存放循环次数或重复次数;
●DX→〔DH,DL〕●DX:数据存放器。

在32位乘除法运算时,存放高16位数;
指针和变址存放器
●SP:堆栈指针存放器,其内容为栈顶的偏移地址;
●BP:基址指针存放器,常用于在访问内存时存放内存单元的偏移地址。

●SI:源变址存放器
●DI:目的变址存放器
变址存放器常用于指令的间接寻址或变址寻址。

段存放器
CS:代码段存放器,代码段用于存放指令代码
DS:数据段存放器
ES:附加段存放器,数据段和附加段用来存放操作数
SS:堆栈段存放器,堆栈段用于存放返回地址,保存存放器内容,传递参数。

相关文档
最新文档