




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.51单片机汇编指令集 (指令集带英文翻译)一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX(Move External RAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchange low-order Digit)低半字节交换;PUSH(Push onto Stack)入栈;POP (Pop from Stack)出栈;二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Car
2、ry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC
3、(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC(Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap)低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJM
4、P(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减后不为则转移;JZ (Jump if Zero)结果为则转移;JNZ (Jump if Not Zero) 结果不为则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为则转移
5、;JNB (Jump if the Bit is Not set) 位为则转移;JBC(Jump if the Bit is set and Clear the bit) 位为则转移,并清除该位;NOP (No Operation)空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit)位 置 。8种常用伪指令ORG 16位地址 ;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。标号: DB 字节数据项表;将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100,“7”,“C”标号:DW 双字节数据项表;定义1
6、6位地址表,16地址按低位地址存低位字节,高位地址存高位字节。例如:TAB: DW 1234H,7BH名字 EQU 表达式 或名字=表达式;用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。例如:COUNT=10 或 SPACE EQU 10H名字 DATA 直接字节地址;给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。例如:ERROR DATA 80H名字 XDATA 直接字节地址;给8位外部RAM起个名字,名字规定同DATA伪指令。例如:IO_PORT XDATA 0CF04H名字
7、 BIT 位指令;给一可位寻址的位单元起个名字,规定同DATA伪指令。例如:SWT BIT 30H标号:;指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个。1. 数据传送指令(30条)MOV A,Rn 寄存器送 A 1 1 E8-EFMOV A,data 直接字节送A 2 1 E5MOV A,Ri 间接RAM 送A 1 1 E6-E7MOV A,#data 立接数送 A 2 1 74MOV Rn,A A 送寄存器 1 1 F8-FFMOV Rn,data 直接数送寄存器 2 2 A8-AFMOV Rn,#data 立即数送寄存器 2 1 78-7FMOV data
8、,A A 送直接字节 2 1 F5MOV data,Rn 寄存器送直接字节 2 1 888FMOV data,data 直接字节送直接字节 3 2 85MOV data,Ri 间接 Rn 送直接字节 2 2 86;87MOV data,#data 立即数送直接字节 3 2 75MOV Ri,A A 送间接 Rn 1 2 F6;F7MOV Ri,data 直接字节送间接Rn 1 1 A6;A7MOV Ri,#data 立即数送间接 Rn 2 2 76;77MOV DPTR,#data16 16 位常数送数据指针 3 1 90MOV C,bit 直接位送进位位 2 1 A2MOV bit,C 进位
9、位送直接位 2 2 92MOVC A,A+DPTR A+DPTR 寻址程序存贮字节送 A 3 2 93MOVC A,A+PC A+PC 寻址程序存贮字节送A 1 2 83MOVX A,Ri 外部数据送A(8 位地址) 1 2 E2;E3MOVX A,DPTR 外部数据送A(16 位地址) 1 2 E0MOVX Ri,A A 送外部数据(8 位地址) 1 2 F2;F3MOVX DPTR,A A 送外部数据(16 位地址) 1 2 F0PUSH data 直接字节进栈道,SP 加1 2 2 C0POP data 直接字节出栈,SP 减1 2 2 D0XCH A,Rn 寄存器与 A 交换 1 1
10、C8CFXCH A,data 直接字节与A 交换 2 1 C5XCH A,Ri 间接Rn 与A 交换 1 1 C6;C7XCHD A,Ri 间接Rn 与A 低半字节交换 1 1 D6;D72.逻辑运算指令(35条)ANL A,Rn 寄存器与到A 1 1 585FANL A,data 直接字节与到A 2 1 55ANL A,Ri 间接RAM与到A 1 1 56;57ANL A,#data 立即数与到A 2 1 54ANL data,A A与到直接字节 2 1 52ANL data,#data 立即数与到直接字节 3 2 53ANL C,bit 直接位与到进位位 2 2 82ANL C,/bit
11、直接位的反码与到进位位 2 2 B0ORL A,Rn 寄存器或到A 1 1 484FORL A,data 直接字节或到A 2 1 45ORL A,Ri 间接RAM或到A 1 1 46;47ORL A,#data 立即数或到A 2 1 44ORL data,A A或到直接字节 2 1 42ORL data,#data 立即数或到直接字节 3 2 43ORL C,bit 直接位或到进位位 2 2 72ORL C,/bit 直接位的反码或到进位位 2 2 A0XRL A,Rn 寄存器异或到A 1 1 686FXRL A,data 直接字节异或到A 2 1 65XRL A,Ri 间接RAM异或到A 1
12、 1 66;67XRL A,#data 立即数异或到A 2 1 64XRL data,A A异或到直接字节 2 1 62XRL data,#data 立即数异或到直接字节 3 2 63SETB C 进位位置 1 1 1 D3SETB bit 直接位置 1 2 1 D2CLR A A清0 1 1 E4CLR C 进位位清 0 1 1 C3CLR bit 直接位清 0 2 1 C2CPL A A求反码 1 1 F4CPL C 进位位取反 1 1 B3CPL bit 直接位取反 2 1 B2RL A A循环左移一位 1 1 23RLC A A 带进位左移一位 1 1 33RR A A右移一位 1 1
13、 03RRC A A 带进位右移一位 1 1 13SWAP A A 半字节交换 1 1 C43.算术运算指令(24条)ADD A,Rn 寄存器加到A 1 1 282FADD A,data 直接字节加到A 2 1 25ADD A,Ri 间接RAM 加到A 1 1 26;27ADD A,#data 立即数加到A 2 1 24ADDC A,Rn 寄存器带进位加到 A 1 1 383FADDC A,data 直接字节带进位加到A 2 1 35ADDC A,Ri 间接RAM 带进位加到A 1 1 36;37ADDC A,#data 立即数带进位加到 A 2 1 34SUBB A,Rn 从A 中减去寄存器
14、和进位 1 1 989FSUBB A,data 从A 中减去直接字节和进位 2 1 95SUBB A,Ri 从A 中减去间接RAM 和进位 1 1 96;97SUBB A,#data 从A 中减去立即数和进位 2 1 94INC A A加1 1 1 04INC Rn 寄存器加 1 1 1 080FINC data 直接字节加1 2 1 05INC Ri 间接RAM 加1 1 1 06;07INC DPTR 数据指针加1 1 2 A3DEC A A减1 1 1 14DEC Rn 寄存器减 1 1 1 181FDEC data 直接字节减1 2 1 15DEC Ri 间接RAM 减1 1 1 16
15、;17MUL AB A乘B 1 4 A4DIV AB A被B除 1 4 84DA A A十进制调整 1 1 D44.转移指令(22条)AJMP addr 11 绝对转移 2 2 *1LJMP addr 16 长转移 3 2 02SJMP rel 短转移 2 2 80JMP A+DPTR 相对于DPTR 间接转移 1 2 73JZ rel 若A0 则转移 2 2 60JNZ rel 若A0 则转移 2 2 70JC rel 若C1 则转移 2 2 40JNC rel 若C1 则转移 2 2 50JB bit,rel 若直接位1 则转移 3 2 20JNB bit,rel 若直接位0 则转移 3
16、2 30JBC bit,rel 若直接位1 则转移且清除 3 2 10CJNE A,data,rel 直接数与 A 比较,不等转移 3 2 B5CJNE A,#data,rel 立即数与 A 比较,不等转移 3 2 B4CJNE Ri,#data,rel 立即数与间接RAM比较,不等转移 3 2 B6;B7CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8BFDJNZ Rn,rel 寄存器减 1 不为0 转移 2 2 D8DFDJNZ data,rel 直接字节减1 不为 0 转移 3 2 D5ACALL addr 11 绝对子程序调用 2 2 *1LCALL add
17、r 16 子程序调用 3 2 12RET 子程序调用返回 1 2 22RETI 中断程序调用返回 1 2 32NOP 空操作 1 1 00版本二汇编指令英文全称1.通用数据传送指令MOV- move MOV dest,src ;destsrc MOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。 MOVSX-extended move with sign data MOVZX-extended move with zero dataPUSH-push POP-pop进栈出栈指令PUSHA-push all POPA-pop all PUSHAD-push all data P
18、OPAD-pop all data BSWAP-byte swapXCHG-exchange交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。 mov ax,1234h ;ax=1234h mov bx,5678h ;bx=5678h xchg ax,bx ;ax=5678h,bx=1234h xchg ah,al ;ax=7856hCMPXCHG-compare and change XADD-exchange and add XLAT-translate 换码指令用于将BX指定的缓
19、冲区中、AL指定的位移处的数据取出赋给AL。 2.输入输出端口传送指令IN-input OUT-output3.目的地址传送指令LEA-load effective addres有效地址传送指令mov bx,0400hmov si,3chlea bx,bx+si+0f62h ;BX=139EH这里BX得到的是主存单元的有效地址,不是物理地址,也不是该单元的内容。LDS-load DS LES-load ES LFS-load FS LGS-load GS LSS-load SS4.标志传送指令LAHF-load AH from flag SAHF-save AH to flag PUSHF-p
20、ush flag POPF-pop flag PUSHD-push dflag POPD-pop dflag二、算术运算指令 ADD-add加法指令 mov al,0fbh ;al=0fbhadd al,07h ;al=02hADC-add with carry INC-increase 1 AAA-ascii add with adjust DAA-decimal add with adjust SUB-substract SBB-substract with borrow DEC-decrease substract 1 NEC-negative CMP-compare AAS-ascii
21、 adjust on substract DAS-decimal adjust on substract MUL-multiplication IMUL-integer multiplication AAM-ascii adjust on multiplication DIV-divide IDIV-integer divide AAD-ascii adjust on divide CBW-change byte to word CWD-change word to double word CWDE-change word to double word with sign to EAX CDQ
22、-change double word to quadrate word 三、逻辑运算指令AND-and or-or XOR-xor NOT-not TEST-test SHL-shift left SAL-arithmatic shift left SHR-shift right SAR-arithmatic shift right ROL-rotate left ROR-rotate right RCL-rotate left with carry RCR-rotate right with carry 四、串指令 MOVS-move string CMPS-compare string
23、SCAS-scan string LODS-load string STOS-store string REP-repeat REPE-repeat when equal REPZ-repeat when zero flag REPNE-repeat when not equal REPNZ-repeat when zero flag REPC-repeat when carry flag REPNC-repeat when not carry flag 五、程序转移指令 1无条件转移指令(长转移) JMP-jump CALL-call RET-return RETF-return far 2
24、条件转移指令(短转移,-128到+127的距离内) JAE-jump when above or equal JNB-jump when not below JB-jump when below JNAE-jump when not above or equal JBE-jump when below or equal JNA-jump when not above JG-jump when greater JNLE-jump when not less or equal JGE-jump when greater or equal JNL-jump when not less JL-jump
25、 when less JNGE-jump when not greater or equal JLE-jump when less or equal JNG-jump when not greater JE-jump when equal JZ-jump when has zero flag JNE-jump when not equal JNZ-jump when not has zero flag JC-jump when has carry flag JNC-jump when not has carry flag JNO-jump when not has overflow flag
26、JNP-jump when not has parity flag JPO-jump when parity flag is odd JNS-jump when not has sign flag JO-jump when has overflow flag JP-jump when has parity flag JPE-jump when parity flag is even JS-jump when has sign flag 3循环控制指令(短转移) LOOP-loop LOOPE-loop equal LOOPZ-loop zero LOOPNE-loop not equal LO
27、OPNZ-loop not zero JCXZ-jump when CX is zero JECXZ-jump when ECX is zero 4中断指令 INT-interrupt INTO-overflow interrupt IRET-interrupt return 5处理器控制指令 HLT-halt WAIT-wait ESC-escape LOCK-lock NOP-no operation STC-set carry CLC-clear carry CMC-carry make change STD-set direction CLD-clear direction STI-s
28、et interrupt CLI-clear interrupt 六、伪指令 DW-definw word PROC-procedure ENDP-end of procedure SEGMENT-segment ASSUME-assume ENDS-end segment END-end汇编指令中文释义数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈
29、.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 为表的索引值 (
30、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 传送目标指针,把指针内容装入E
31、S.例: 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位标志入栈.POP
32、D 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,余
33、数回送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) 当值为负时,高位补 1 ;当值为正时,高位补 0 ROL 循
34、环左移.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 串
35、比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX0时重复.REPC 当CF=1且CX/ECX0时重复.REPNC 当CF=0且CX/ECX0时重复.五、程序转移指令1无
36、条件转移指令 (长转移)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为零时转移.4中断指令INT 中断指令INTO 溢出中断IRET 中断返回5处理器控制指令HLT 处理器暂停,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史城市文化产业发展咨询基础知识点归纳
- 石大学前儿童保育学课件1-4消化系统
- 预分配模型与环境经济学的交叉研究-洞察阐释
- AI在生理学教学中的发展历程与趋势分析
- 社区嵌入式托育服务模式的创新与可持续发展路径
- 原料药企业经营管理方案
- 提升政法队伍职业道德与服务意识的行动方案
- 松岗街道松涛花园老旧小区改造工程可行性研究报告
- 2025至2030年中国玻璃扁珠行业投资前景及策略咨询报告
- 2025至2030年中国熔接保护套管行业投资前景及策略咨询报告
- 管道沟槽开挖施工方案
- 连接器行业专业英语高频词句
- 医院监控设备故障应急预案
- 护理安全隐患及防范措施
- 葡萄球菌感染病因介绍
- 【MOOC】信息组织原理与利用-武汉大学 中国大学慕课MOOC答案
- 矿井地质灾害防治中长期规划(2018-2022年)
- 【MOOC】供应链管理-四川大学 中国大学慕课MOOC答案
- 抖音本地生活BD培训
- 2024年山东省青岛市中考生物试题(含答案)
- 3D三维可视化BIM模板安全施工方案
评论
0/150
提交评论