找回密码
 注册
关于网站域名变更的通知
查看: 445|回复: 1
打印 上一主题 下一主题

8086CPU汇编指令速查手册

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-11-28 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
~~~- f3 F( w' V" o  Y2 d$ w3 s
8086 CPU 汇编指令速查手册: d" }( U% E) i1 g
  一、数据传输指令! n% U/ t; J. W- w
  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.4 R0 {0 ~: x% c8 ~& t( a3 e
  1. 通用数据传送指令.
$ G4 u: V% L+ {; e! @  MOV 传送字或字节.) T  |& {& c1 N5 q$ M1 a, v
  MOVSX 先符号扩展,再传送.
0 U5 T' b+ V0 N6 `  MOVZX 先零扩展,再传送.
& B! ]  e+ S$ v$ \0 s  PUSH 把字压入堆栈.
9 F" g5 A0 o; m, e) [3 g, i3 n  POP 把字弹出堆栈.7 v; \3 r' b' z
  PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
5 |5 R8 ~5 }& ?  POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.4 {0 _- a2 C  a) \- ~
  PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
8 D7 q* M$ P- n% M$ T' k7 {  POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.5 l( ^/ T. ?0 p5 g0 L, r
  BSWAP 交换32位寄存器里字节的顺序
, j: C6 e0 u$ E2 b  XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)2 n. H" p3 w; h" v! y: I8 k+ f
  CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )* y; m. L) H7 C) p. |
  XADD 先交换再累加.( 结果在第一个操作数里 )9 ]8 K, T  Y! E6 R# G# e
  XLAT 字节查表转换.4 j5 }8 b  K9 W- N, S! B# ^
  ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
$ _& o4 X: D0 V& i; U2 z4 ?6 I  0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
3 ?) z* `1 q; ]  2. 输入输出端口传送指令.0 u* Z& @0 `; v+ a
  IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )0 x6 {1 O7 i# {7 |5 I1 l) L
  OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )3 l- c0 ^4 M" Z5 U& T- s4 o9 ]
  输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,2 @8 `0 l$ L7 Q
  其范围是 0-65535.0 L* M5 e' H7 {* |) n) u7 X
  3. 目的地址传送指令.# s% _3 o! m0 x# c  E  ~' y
  LEA 装入有效地址.
# I8 l( }; l8 ~, K( ?7 ^9 ?  例: LEA DX,string ;把偏移地址存到DX.
# ]- w7 Q$ v: I, M/ v/ f/ V$ u  LDS 传送目标指针,把指针内容装入DS.1 m" J: R8 _/ J# E$ g; _' I
  例: LDS SI,string ;把段地址:偏移地址存到DS:SI.  ~3 w# `5 @) q- I% O0 H
  LES 传送目标指针,把指针内容装入ES.) Z! p8 h- x6 j$ j
  例: LES DI,string ;把段地址:偏移地址存到ESI.5 A) F# N! H  N+ W1 w/ ]% _: n$ m! B
  LFS 传送目标指针,把指针内容装入FS.
8 A5 J5 B* ^0 D( c: @) U  例: LFS DI,string ;把段地址:偏移地址存到FSI.' @7 s( [, \# U9 @, N
  LGS 传送目标指针,把指针内容装入GS.
0 l- H' s2 N# v3 R- s$ ]4 ^2 P  例: LGS DI,string ;把段地址:偏移地址存到GSI.
: P1 N; X2 |& o+ I- p9 Q  LSS 传送目标指针,把指针内容装入SS.
( d+ M+ b$ S$ i; Q) W* {  例: LSS DI,string ;把段地址:偏移地址存到SSI.
: y) Z0 x& s( R, ?3 u  |" s5 O& h* |  4. 标志传送指令.
% G9 n+ ~, }  R& v; C- G0 `' d  LAHF 标志寄存器传送,把标志装入AH.
! M5 a$ \1 F  R) A$ x; ?  SAHF 标志寄存器传送,把AH内容装入标志寄存器.* T( Z( |3 m  P3 h
  PUSHF 标志入栈.
- Q- D( H6 k' D1 |' J3 ~# B3 A  POPF 标志出栈.  N6 n7 A8 T7 d; k$ }
  PUSHD 32位标志入栈.6 _8 Q; y$ ~9 P7 F
  POPD 32位标志出栈.
4 |! f+ p) i: Z. |  y3 s# X) z  二、算术运算指令4 ]; L9 R+ C' l& Q& n0 y1 k: I
  ADD 加法.
6 s% V. N: E+ Q, Z1 v* @  ADC 带进位加法.# E  k" B, k6 w2 l
  INC 加 1.
7 t" h6 j/ X1 I7 G2 X  AAA 加法的ASCII码调整.
$ t) w2 W  j  W; ^# `1 U$ ~$ p5 K  DAA 加法的十进制调整.
# D1 y3 y1 g8 l' e! }4 F  SUB 减法.
1 T3 t+ t) N" E. q# y% p' J  SBB 带借位减法.4 i- c' L' P7 Y1 n; f+ _- p% \
  DEC 减 1.& Z! L( L% D& c) q1 v
  NEC 求反(以 0 减之).
1 E2 l* F# m3 B  CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
/ z# j; }9 Y5 B8 m4 V  AAS 减法的ASCII码调整.2 s; J0 ^: m& Z" o2 F& X3 P! H
  DAS 减法的十进制调整.9 I: w7 ]$ V# X5 y- u+ b: i+ F
  MUL 无符号乘法.) w1 z5 L5 T* B: r* G+ Y5 q/ x7 M
  IMUL 整数乘法.
$ Q2 @9 K6 R- ]  Q. r" D8 U  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),# y# a7 C, l3 k; M
  AAM 乘法的ASCII码调整.
, }" Y9 O4 N, i1 j0 x  w; q  DIV 无符号除法.! D- `" r* P5 U: x. _4 l
  IDIV 整数除法.# s' c8 P0 o. o( a6 m9 Q2 D
  以上两条,结果回送:5 X* m. ?4 p; y2 ?0 s7 ^
  商回送AL,余数回送AH, (字节运算);
9 f; {$ l4 k7 R% z- R  或 商回送AX,余数回送DX, (字运算).
0 M3 a6 S( T8 k  AAD 除法的ASCII码调整.# Q# O+ R0 N. i
  CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
" d0 u( J7 `! @% i, n9 U& p  CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)" {( L; a7 i2 f& b9 c, H3 [
  CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)8 H+ E2 U# Q, ?3 P( W) V
  CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)# c! |+ p: o( R: }9 w8 i* n  c
  三、逻辑运算指令( H- x1 S3 E- O" C
  AND 与运算.; o  a) [2 C4 b" I6 [1 g
  OR 或运算.
' H( h! N$ W& b8 ~8 \  XOR 异或运算.
; v7 a: `$ S7 V& e+ o' r1 t  NOT 取反.
# ~+ E( d2 q% c8 h1 `  TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).' D$ i: z" L, }3 R% h, z7 v
  SHL 逻辑左移.: d+ Z7 U( P: W' W, |! d6 n! Q
  SAL 算术左移.(=SHL)4 Y- S, C6 i: c. |/ I4 a( Z
  SHR 逻辑右移.9 n$ r& b9 e6 q2 U/ ]0 H3 D
  SAR 算术右移.(=SHR)) Q3 E3 p6 a3 ^* Z$ s# b/ L
  ROL 循环左移.7 D1 z3 M! u$ V8 K( @5 b
  ROR 循环右移./ P- d2 c% \: Y$ f% p  j& s6 G5 V
  RCL 通过进位的循环左移." z) m6 @% G6 ^' {3 G
  RCR 通过进位的循环右移.
/ j) L8 |: L* K" N/ ^2 W  以上八种移位指令,其移位次数可达255次.5 S! e- V: U& c' ?$ h
  移位一次时, 可直接用操作码. 如 SHL AX,1.* T! I! P: M( E, C4 N8 U
  移位>1次时, 则由寄存器CL给出移位次数.
3 G1 b1 q3 k$ \! C  如 MOV CL,04
; d8 ~" \$ g0 a6 k6 B  R8 E/ u  SHL AX,CL
; b: I4 a+ J5 {. ^  四、串指令) T9 ]% K3 j" ?% E& ^
  DS:SI 源串段寄存器 :源串变址.
5 Z1 w4 S# ?: o1 s* G: p  ES
; W  J7 t( ^6 i; `  I 目标串段寄存器:目标串变址./ m3 f( ?! p% H) g) n0 N
  CX 重复次数计数器.
6 G7 p" n$ Q, l" u3 z  AL/AX 扫描值.3 v& e6 i$ `0 z* t- {1 A, C
  D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.& U+ q" h( |0 `4 r
  Z标志 用来控制扫描或比较操作的结束.! M* s6 @' V2 }; i) q; }
  MOVS 串传送.( [; _$ c# v3 m/ s3 i8 \. ]
  ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ), ]& D3 C4 t& I8 x
  CMPS 串比较.; Q. {5 Z6 H/ K0 u9 h
  ( CMPSB 比较字符. CMPSW 比较字. )( B9 T0 }' R/ C
  SCAS 串扫描.
/ w- ?' O& W* r& _8 y0 v" h  把AL或AX的内容与目标串作比较,比较结果反映在标志位." |- b6 W$ V! l% N* m
  LODS 装入串.
. p0 ~4 i8 R0 V( \! i  把源串中的元素(字或字节)逐一装入AL或AX中.
9 K+ P4 x# H; N& d3 G% T, u: [; X  ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
& N; t4 i. s0 ?( N' y; ^4 q  STOS 保存串.0 h% C  \2 G- ]4 l
  是LODS的逆过程.  @: a; i. f9 |, t7 ]
  REP 当CX/ECX<>0时重复.
1 ^; G" _: H( G3 d/ M4 n+ |8 X6 ~  REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.0 a. b1 I* h" B! l
  REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
, G. J/ l7 J5 I( S  REPC 当CF=1且CX/ECX<>0时重复.. X8 a1 T$ N9 C7 m  @
  REPNC 当CF=0且CX/ECX<>0时重复.) p- [4 z2 v0 n/ @" n$ z5 J
  五、程序转移指令5 [, o* D/ K* g2 F- V+ Q
  1>无条件转移指令 (长转移)2 w) ^% r3 Q3 ]; r8 _. d
  JMP 无条件转移指令# [2 ~7 N/ Y5 N8 k9 ]/ X
  CALL 过程调用
' V6 Z( w$ t  X/ W1 Q1 o7 I  RET/RETF过程返回.$ h, C1 O4 s7 T7 v* r
  2>条件转移指令 (短转移,-128到+127的距离内)
$ z3 f2 g# Y# A9 _, x+ ]  ( 当且仅当(SF XOR OF)=1时,OP1% Z8 p+ o4 @* w. e
  JA/JNBE 不小于或不等于时转移.2 z( n' t$ s6 L0 k. ^( x! m
  JAE/JNB 大于或等于转移.
( S5 E! T5 |0 H; S3 m# z( X+ m  JB/JNAE 小于转移.) x0 ~1 [9 `. e
  JBE/JNA 小于或等于转移.: Z9 h' t: f* k0 O1 e7 d2 J
  以上四条,测试无符号整数运算的结果(标志C和Z).' a& M; B5 m" h5 W
  JG/JNLE 大于转移.
6 ^4 _! o  H$ p) f  ~6 n  ?  JGE/JNL 大于或等于转移.# Q6 b( A; G+ O$ s4 X% b+ V
  JL/JNGE 小于转移.; h- {9 Y, W8 o/ E
  JLE/JNG 小于或等于转移.# D6 f) ^! d2 a3 o0 `3 N
  以上四条,测试带符号整数运算的结果(标志S,O和Z).' c) u: @( `3 {* T3 L# I: E7 }* H
  JE/JZ 等于转移.
. C# Y1 A5 o1 n9 y  JNE/JNZ 不等于时转移.
+ O/ n9 ^  z1 `9 l8 x  r  JC 有进位时转移.
! C6 R3 v+ j6 k2 X0 f  JNC 无进位时转移.! V. P( o+ b2 V& Z
  JNO 不溢出时转移.2 B9 }# P: p- p( p+ G2 ~2 ]# u, p( O
  JNP/JPO 奇偶性为奇数时转移.# V3 a* ]1 O" r/ v
  JNS 符号位为 "0" 时转移.
4 h' A- Q+ [6 \% [' v( q) h, F  JO 溢出转移.- I7 Q: h" e  |" ^
  JP/JPE 奇偶性为偶数时转移.
5 j9 m* I! Y5 I; Z; u8 T* C  JS 符号位为 "1" 时转移.
% I7 g  p. t8 z. ]: O( |  3>循环控制指令(短转移)
  T: W4 Q3 ~/ p  ]6 m  H$ y  LOOP CX不为零时循环., k8 Q' \$ d- T1 J( D; z
  LOOPE/LOOPZ CX不为零且标志Z=1时循环.
& _* P. N1 n+ E- T% G8 G7 {  LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
7 K$ C& W  T# }/ k9 M  JCXZ CX为零时转移.
( S: f( \: i3 O# i! h& ~0 P' Z0 _1 ?  JECXZ ECX为零时转移./ F0 L+ s5 M9 e; L( J; S
  4>中断指令
3 y: \! [4 p  I  INT 中断指令
6 A, E. v1 `4 m$ c: i$ Q+ S  INTO 溢出中断
1 \6 l- {' k; D& e# {7 G, f  IRET 中断返回3 ^* h$ E% J0 a0 ?
  5>处理器控制指令9 J1 W+ N& t' M1 m" h* @
  HLT 处理器暂停, 直到出现中断或复位信号才继续.# ?1 g2 H* J. C5 Z0 v0 e
  WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
+ s7 U3 F6 j; k; {: z; a  ESC 转换到外处理器., R  U1 p: N4 o
  LOCK 封锁总线.
: R1 N! {' j+ e% x  NOP 空操作.. G6 |* @2 |' b0 w* g6 d1 z9 p
  STC 置进位标志位.
* j$ V. G2 P& [1 ]& R  CLC 清进位标志位.
1 s8 {$ g0 J5 d; O8 ?  CMC 进位标志取反.- W  z/ P! l  O: F0 i' Z( M: `+ B
  STD 置方向标志位.
' w2 Q5 q3 T6 H' M  CLD 清方向标志位.+ E6 i! M$ ^  t
  STI 置中断允许位.
4 i' o0 M( a1 I: c1 f, a  CLI 清中断允许位.
' \% h) f& ]% e  六、伪指令
% T( k" v( I$ `$ j: \1 M' m  DW 定义字(2字节).
3 c6 u1 Q/ j7 j% D# G: [  PROC 定义过程.
2 o8 O2 ~6 [$ n- {0 E+ n5 d3 {  ENDP 过程结束./ z. B6 S. k+ f. O# G! _# l
  SEGMENT 定义段.
6 h- W( k* c4 C0 N5 A3 L  ASSUME 建立段寄存器寻址.
' U& D  j. J& [+ l% N: I8 f  ENDS 段结束., O. B! `$ u: m* I9 S
  END 程序结束.

8086CPU汇编指令速查手册.pdf

104.83 KB, 下载次数: 2, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2016-11-29 11:22 | 只看该作者
捧场,谢谢分享!5 i1 ~3 a6 F9 \* u$ S! L$ i3 B) k
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 03:56 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表