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

8086CPU汇编指令速查手册

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
~~~
; d0 f  _/ o: D, t/ n8086 CPU 汇编指令速查手册* D0 _# a, I1 @# a2 n) ~- w4 B
  一、数据传输指令
8 k9 K& Q6 E  [! j: D# U! P  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.$ E# q# m, d% x
  1. 通用数据传送指令.
* Y# c+ t( m6 n3 M- k% _  MOV 传送字或字节.
2 j* `. I  s' K' d8 ~% t  MOVSX 先符号扩展,再传送.
+ p" b# p3 T0 \2 ?6 \  MOVZX 先零扩展,再传送.
% S0 M: E3 u, r& u  PUSH 把字压入堆栈.
0 |( y1 ^" q+ B" ]* M# u! b& S  POP 把字弹出堆栈.# ^4 [" p- [, Z! Q" J9 G9 {
  PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
/ x2 H0 w1 I6 u  POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
/ M$ E7 W9 b% m7 f) `4 Y  PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
: K4 i. M* C# Y1 f  POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
9 e$ B& k# }# x: d" m- |  f  BSWAP 交换32位寄存器里字节的顺序
8 ~+ v; ?3 [+ s' {. I  XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
3 T; q# B. D; e3 j7 l, d' {2 E# _7 M  CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )' I8 _6 |3 e, `' v0 Z  G
  XADD 先交换再累加.( 结果在第一个操作数里 )  |" q) }# ]- M
  XLAT 字节查表转换.
0 G2 K3 ?$ i" h' ~0 A5 }1 Z  ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即5 Y3 E" K6 p  H5 J
  0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
3 H0 K6 E6 B" X0 x" g* o. F) K/ X  2. 输入输出端口传送指令.5 ^2 _( N) i+ Y' P
  IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
$ I% |$ q1 B& p+ h0 `3 B# W  OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )7 f8 H. f! ]5 a, Z/ B
  输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,/ g! H- y) U( B# @; b. X* g
  其范围是 0-65535.
1 P, U) u( U: z: S  3. 目的地址传送指令.; N: H( E  ]  {$ a8 H! @
  LEA 装入有效地址.
# t  w0 d- U% ], g  例: LEA DX,string ;把偏移地址存到DX.
" z$ C3 N" }$ v  LDS 传送目标指针,把指针内容装入DS.: E# @7 m- e2 \" A
  例: LDS SI,string ;把段地址:偏移地址存到DS:SI./ G$ F& S  Y2 A# B' J
  LES 传送目标指针,把指针内容装入ES.8 f9 R7 e: e0 O5 r
  例: LES DI,string ;把段地址:偏移地址存到ESI.+ O' f. F2 B8 O/ I  T# v
  LFS 传送目标指针,把指针内容装入FS.
- K* ]2 r8 R/ a2 L# P6 w  例: LFS DI,string ;把段地址:偏移地址存到FSI.
! \8 s+ v1 |7 e- I9 V  LGS 传送目标指针,把指针内容装入GS.2 e7 ]( c) w9 ]4 [5 r( p
  例: LGS DI,string ;把段地址:偏移地址存到GSI." Z  [: r/ d+ F9 h# f% s7 V
  LSS 传送目标指针,把指针内容装入SS.
9 ^6 T# Z7 B" w% a0 d7 I! i  例: LSS DI,string ;把段地址:偏移地址存到SSI.
5 e3 a0 [$ v1 F* k4 N9 x% p7 a  4. 标志传送指令.
9 H) h* o  V$ p+ R  LAHF 标志寄存器传送,把标志装入AH.1 o* W/ b" B+ E4 @
  SAHF 标志寄存器传送,把AH内容装入标志寄存器.
- o$ j* `9 a) s# ^  PUSHF 标志入栈.
' q* F3 q* k, w- Y& W  POPF 标志出栈.2 t) M* D2 ]0 {4 x# B  T# z
  PUSHD 32位标志入栈.
( z7 m! u6 Y  Y: v+ y0 ~  POPD 32位标志出栈./ b( o" [" z0 a* N1 N1 ?
  二、算术运算指令
" V6 U6 e6 z& z, ?9 v; K1 w  ADD 加法.& ^: I: n4 _; L5 o1 D
  ADC 带进位加法.
( C$ b; w  y- e  INC 加 1.
  e$ ?% D8 }; n, r( L' H1 B  AAA 加法的ASCII码调整." p* W- T$ x3 `* z$ W/ g9 J& a
  DAA 加法的十进制调整.
* N7 C5 v, C: W" z: P/ Q  I  SUB 减法.. O, L  r# q6 n9 l# i9 }
  SBB 带借位减法.
" A+ i7 [, D2 V! G" Q  DEC 减 1.
, e3 U4 R$ A8 o, M" I( N  ?% N  Y  NEC 求反(以 0 减之).
1 r+ @. H3 c) Y* _. L* }8 |  CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
, j# _( ~& G; N2 g( g  w  AAS 减法的ASCII码调整.9 m# o0 \) q# Z! ^5 `4 p' f
  DAS 减法的十进制调整.
( o2 [2 I# I0 O7 Y5 V* m6 P  MUL 无符号乘法.! m7 u. x  L6 f  b6 {' X( u5 w( P# a5 b
  IMUL 整数乘法.* ?: q) _  B9 \2 _) [
  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
8 ~6 j+ W8 n0 T- M, K4 m, p  AAM 乘法的ASCII码调整.7 v7 X3 |8 D2 W* u0 y
  DIV 无符号除法.
* d' o' k5 e- h+ {' V1 p  IDIV 整数除法.% S$ r1 o7 o+ D; i! u6 O- i5 v2 w
  以上两条,结果回送:( x1 B  o% \+ h, b9 C. N* ]. G3 R
  商回送AL,余数回送AH, (字节运算);
: r+ r9 j( Q+ g* y) @- ], u; e  或 商回送AX,余数回送DX, (字运算).
5 {& Z$ f6 X* R& ~8 ?, i  K  AAD 除法的ASCII码调整.
; K( r- e. p" d5 D$ f  CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
+ F/ v3 y; Z  z( G9 u  CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)7 l+ X- S' A5 q! d
  CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)0 C) T  }0 r+ a( ]/ a0 k8 G
  CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
4 K! g: d$ P# o- W$ t  三、逻辑运算指令0 r- }" x  [1 ]
  AND 与运算.' ~: B! _/ ^6 X5 f% P
  OR 或运算.  S. ?1 `+ z' E$ h  F8 O  W, f' i
  XOR 异或运算.2 c5 m" ?+ f, b/ E
  NOT 取反.% m8 L- R. _- ?" X0 o0 B7 v
  TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
9 |( d& h6 [3 Y0 Z  Z% ?  SHL 逻辑左移.8 @( v8 r! ?$ w, `, X$ ~: t' D
  SAL 算术左移.(=SHL); J% d7 n' F: j: s, u* z' ^
  SHR 逻辑右移.
9 y7 D# e$ U) S  SAR 算术右移.(=SHR)  |7 ?. u" J9 Z5 H
  ROL 循环左移.
* y! ]( o6 m8 x  ROR 循环右移.) E+ x3 ^( @, Z; @. {9 w0 s' |
  RCL 通过进位的循环左移.! }  h! `, W3 F/ d' h, I* r; w) B5 ~
  RCR 通过进位的循环右移.
0 W3 L3 q% ]* M' g1 u  以上八种移位指令,其移位次数可达255次.4 {; w- l& I3 ?" Q. t/ `
  移位一次时, 可直接用操作码. 如 SHL AX,1.
7 v+ [. a! n) }+ V' E  移位>1次时, 则由寄存器CL给出移位次数.
) I/ F' e" s! K# N- v  如 MOV CL,04
( A  N% p6 A" j  E! {1 }  SHL AX,CL' h7 \) n- N, N' s# L
  四、串指令- J8 l1 J( w: H
  DS:SI 源串段寄存器 :源串变址.0 a/ g* t: q# j/ X5 o/ X9 o6 b
  ES7 B$ s6 F" o/ E- B6 r2 ]
  I 目标串段寄存器:目标串变址.
5 l; s( s) |- @  s9 z/ T  |' G  CX 重复次数计数器.: |8 [$ |! |, n# B' ~
  AL/AX 扫描值.  I- L7 U6 E0 s/ h+ a/ {9 {
  D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量., G$ [3 x0 O, c! n
  Z标志 用来控制扫描或比较操作的结束.% e6 p8 u) b) V: ?( H
  MOVS 串传送.
/ B! T0 l9 X0 _. M: v# I- c  ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
1 ~% g9 k# B  j5 o, |& h  CMPS 串比较.9 U5 M* n. X4 p* i' b, H4 ]
  ( CMPSB 比较字符. CMPSW 比较字. )
; f" S1 H4 ~6 v; l& W* K  H& _' K  SCAS 串扫描.
: s- Z6 D2 `& F7 h* }  把AL或AX的内容与目标串作比较,比较结果反映在标志位.' K6 `6 v3 H# [4 l
  LODS 装入串.
3 V& B9 ]  S8 E& r  把源串中的元素(字或字节)逐一装入AL或AX中.
! h3 p1 |6 N- l  H: b  ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
/ x% L2 M- o# @, q  STOS 保存串.
* q. W5 R. V% H- }! ?  是LODS的逆过程.  n! W/ D0 b( f0 @/ Z
  REP 当CX/ECX<>0时重复.
3 }% \3 F# R. }/ j, S# D  REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
( m: M7 Q: T* s' j9 [: O5 r" ?  REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
9 V( C: P0 l  D  REPC 当CF=1且CX/ECX<>0时重复.
; ]# ~9 {. x! A/ J  a  REPNC 当CF=0且CX/ECX<>0时重复.
/ g7 I' f. |7 y6 y  五、程序转移指令, C& L. x1 c$ D+ l1 M5 J# S# I# J3 ]2 _
  1>无条件转移指令 (长转移)) l  O+ C, K4 @$ h, ~$ E5 e
  JMP 无条件转移指令
+ `$ @8 t2 u7 R' A3 {: F8 g6 [  CALL 过程调用& A! E1 G' [( Z
  RET/RETF过程返回.
7 X7 }) ]8 X$ u3 b  2>条件转移指令 (短转移,-128到+127的距离内)$ H5 g& R6 m3 h1 O7 N9 T
  ( 当且仅当(SF XOR OF)=1时,OP1, Q; a8 k+ S' V) j* M
  JA/JNBE 不小于或不等于时转移.; F/ M9 t; M+ g# w! }
  JAE/JNB 大于或等于转移.* s( y9 ?4 ~2 o1 @0 ~
  JB/JNAE 小于转移.
8 s  e( O4 f& E3 e( s. @% @: @  JBE/JNA 小于或等于转移.$ t, \* c3 f9 \* d, Y$ ~
  以上四条,测试无符号整数运算的结果(标志C和Z).1 M; a9 `  ^# o
  JG/JNLE 大于转移.
; S$ U. u2 i& A5 m( `9 [4 t  JGE/JNL 大于或等于转移.) [. q9 Z" ]3 S
  JL/JNGE 小于转移.* O: a" n8 i4 [* ^; P: L
  JLE/JNG 小于或等于转移.0 L/ y: ]0 r6 v1 J8 j9 I. W
  以上四条,测试带符号整数运算的结果(标志S,O和Z).
' e/ a- v* `6 Z; i- s6 N  JE/JZ 等于转移.
8 i6 E4 S7 C' D" O  JNE/JNZ 不等于时转移.
+ r1 e- D, A! f. Q  JC 有进位时转移.: r! o) a  I' A; d$ a3 A5 |7 L
  JNC 无进位时转移.6 ^  V# M; |: V7 d. _4 {* j
  JNO 不溢出时转移.
* V, z% Q! ]" L* u/ C& U: S: b  JNP/JPO 奇偶性为奇数时转移./ _$ x, x, M# t" \/ n/ T
  JNS 符号位为 "0" 时转移.
0 N! _" H( x4 K  JO 溢出转移.9 d" R0 s( I6 H4 M* J+ t
  JP/JPE 奇偶性为偶数时转移.$ H- S+ P* d, C( s2 g3 f/ E7 [
  JS 符号位为 "1" 时转移.
- l1 ]- [8 Q' i8 U1 K9 X$ W& r- G4 j  3>循环控制指令(短转移)
7 T2 d9 v5 Z6 R9 B) ]8 G2 }  LOOP CX不为零时循环.
  q* c6 `1 y" ^/ Q% I1 a0 q  LOOPE/LOOPZ CX不为零且标志Z=1时循环.+ O, G4 t0 f2 U/ f
  LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
2 c9 l" t$ C% z9 J# g$ n2 X! j  JCXZ CX为零时转移.
4 G& ]4 k$ U8 ~3 c  JECXZ ECX为零时转移.5 g/ ~" |* N  W/ l! d* t" r
  4>中断指令
' |# c, R% B* g( ~7 N4 v1 p  INT 中断指令# @7 o* q% K. e" s
  INTO 溢出中断
' G2 p9 m/ Q$ c% l  IRET 中断返回' D! s) E' E  r% g% Z
  5>处理器控制指令
+ o4 ~/ }( w* J3 k  HLT 处理器暂停, 直到出现中断或复位信号才继续.7 E5 J: u$ J/ j7 {9 ~6 \
  WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.& U: E  w# Y7 u; }
  ESC 转换到外处理器.
0 ~1 i0 A( Y" {7 B! M7 B  LOCK 封锁总线.
6 T4 _) q, ]' n$ B  NOP 空操作.
" K8 B# P, \" M. b8 u  STC 置进位标志位.
. i1 J. `: J' h! `  CLC 清进位标志位.
! ?- @, P4 F2 O( M# a% z5 r  CMC 进位标志取反.# D6 ~9 [$ ^( p2 v- w
  STD 置方向标志位.
8 C5 M, c/ o7 K0 J% G+ S4 l) H  CLD 清方向标志位.
2 C, V# E/ r& @( E3 U% M  STI 置中断允许位.
. z% e% u3 F+ o8 a/ ~  CLI 清中断允许位.  e3 Z+ f2 L2 s/ T. _
  六、伪指令5 D; k& h" v# l6 o
  DW 定义字(2字节).. D) [3 V  V1 D# k$ ]) a! p, |' ?( K
  PROC 定义过程.
  d# o3 n4 a$ U; v& Q, P+ I8 \  ENDP 过程结束.
* y( q( y. x& q) i- o4 l  SEGMENT 定义段.# X& D! ]/ a  i2 K  k6 d: N% a" ?, b
  ASSUME 建立段寄存器寻址.0 I+ ]3 A( m8 |- g* o( E
  ENDS 段结束.3 q; g  D6 a3 w4 Q' P% U+ `
  END 程序结束.

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

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

该用户从未签到

2#
发表于 2016-11-29 11:22 | 只看该作者
捧场,谢谢分享!
, G% N9 q$ j( ~) f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 01:30 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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