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

8086CPU汇编指令速查手册

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
~~~
0 \6 P4 c0 B$ s1 y! ]2 D3 U8086 CPU 汇编指令速查手册' l+ o4 T4 o* p0 H8 W. F
  一、数据传输指令
- ]* J" p: a* r5 X2 \/ p  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
( g; M% P% [3 g: E  h& I  1. 通用数据传送指令.5 i4 A$ v/ k( o. A' Q% B& p1 j
  MOV 传送字或字节.% K% z6 X9 g, G- O+ ^4 P, ~
  MOVSX 先符号扩展,再传送.& G' c- R' p' m# T* s
  MOVZX 先零扩展,再传送.  f& B; s: X( D& q
  PUSH 把字压入堆栈.
4 F, H$ l3 \) u& C+ h! H$ D# s  POP 把字弹出堆栈.9 }* Q4 }; D1 V1 E0 `' _" P5 U
  PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
# i) W9 L+ D8 t  POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
; J+ N, |! ?! E  PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
  H: w- [  T8 L) ~$ I/ C  POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
' n, j- ^4 n: M9 m  BSWAP 交换32位寄存器里字节的顺序
* e. q. w' T0 j. F& Q/ R, R  XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)1 d2 u" A7 E4 B( Z
  CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ). }2 U# L) |# b, y% a
  XADD 先交换再累加.( 结果在第一个操作数里 )( J) L8 v$ ~& |& d7 l6 N# n
  XLAT 字节查表转换.3 g' J+ G7 U1 ~+ V
  ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即8 d  k: h2 G, n
  0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )4 j7 U! m! ^2 _4 e8 ^1 L/ e
  2. 输入输出端口传送指令.6 {/ g7 z. X8 q( s# i- F/ U1 f
  IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
9 t. f$ S3 j, }8 y' q( o  OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
. z5 N8 R1 W5 N* `6 K+ Y) T/ Y3 y, W  输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,6 U! U  k* I) l9 t
  其范围是 0-65535.8 A# r8 p* J9 X; h
  3. 目的地址传送指令.
8 W! R& @- b$ _  P+ p$ }  LEA 装入有效地址./ {5 A, {3 i5 B6 i9 o
  例: LEA DX,string ;把偏移地址存到DX.3 C2 V+ Q; ^( Y5 [3 C9 \
  LDS 传送目标指针,把指针内容装入DS.
8 j  x0 Y; [! \2 k0 x1 r  例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
+ w1 R; E9 x+ a+ t  LES 传送目标指针,把指针内容装入ES.
8 ^; J6 B! q5 l0 u1 o$ w  例: LES DI,string ;把段地址:偏移地址存到ESI.2 A' d. D9 b' w5 l7 g( v& g4 g: K; F
  LFS 传送目标指针,把指针内容装入FS.* o; u( X- K& L" ]. Z6 @
  例: LFS DI,string ;把段地址:偏移地址存到FSI.
4 s( P' Z/ J& S9 ?  U+ ]  LGS 传送目标指针,把指针内容装入GS.
( ?8 k" Y  h$ _+ |' n# H" b  例: LGS DI,string ;把段地址:偏移地址存到GSI.4 F5 Z- j& x$ e  ~* E
  LSS 传送目标指针,把指针内容装入SS.
5 M4 ]7 t, f0 P2 \) T7 ^! D  例: LSS DI,string ;把段地址:偏移地址存到SSI.
7 `: f% A1 {) {; C: Z1 }4 d1 q  Y% d- \  4. 标志传送指令.' Q5 `5 z1 p6 |1 f! q4 @
  LAHF 标志寄存器传送,把标志装入AH.7 P- c1 K$ v  w0 s$ j6 l+ |
  SAHF 标志寄存器传送,把AH内容装入标志寄存器.0 v$ H! a3 Z( \; X8 J6 V) ^& T& A& k
  PUSHF 标志入栈., w7 w, Q7 t6 N0 n
  POPF 标志出栈.
! R$ k: N4 L: r/ r  PUSHD 32位标志入栈.
0 t& s1 j6 ?* Z, p  POPD 32位标志出栈.5 l, Z% V: g; P$ |& w; P2 Z" \* v
  二、算术运算指令: M- L( i2 q& D  f, }$ j! ?' u0 @
  ADD 加法.% h9 @/ o$ E6 a  L5 v9 q# ~- r
  ADC 带进位加法.- B2 f8 m4 _6 C3 V7 \! `& ^  V- A: [
  INC 加 1.
! k# V- q$ u* S6 _7 s  AAA 加法的ASCII码调整.
! p) M; ]0 W" M; Q- d5 F+ k  DAA 加法的十进制调整./ R+ e  W& Z2 Y1 h$ l$ T# ~, ?
  SUB 减法.3 A' r; W' A; W- W1 j! g% d
  SBB 带借位减法.
" z3 [; b' q, }, o, b  DEC 减 1.
' ^" @# ^9 M: |  NEC 求反(以 0 减之).: o% e) E- e( G: j$ V# |" Q2 i( G2 Q
  CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
% l; S1 N; ]1 H, d  AAS 减法的ASCII码调整.  ^# m* d9 c: b# a
  DAS 减法的十进制调整.# ~' }1 \$ A* z2 [0 Q; N
  MUL 无符号乘法., x* [3 F) r3 }+ y7 I$ o2 G
  IMUL 整数乘法.! \- i, P) [9 {
  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算)," e$ o+ O: ]# _* n- O8 S8 g8 k
  AAM 乘法的ASCII码调整." i6 n+ [) k3 P, q6 c! y
  DIV 无符号除法.
9 N4 G% {" Y3 G, M* I( E  IDIV 整数除法.2 R/ L  Z6 v+ n' A2 b
  以上两条,结果回送:
  f7 ]; m1 v  L& _  商回送AL,余数回送AH, (字节运算);6 R7 |4 O; c9 Y" L7 h
  或 商回送AX,余数回送DX, (字运算).
# r2 @- A- @. r" t- D4 a  AAD 除法的ASCII码调整.% A1 w8 u+ j) R5 C# h
  CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)6 f% B( ?9 r) \5 v" X4 |0 b0 y
  CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
5 n$ K3 O# I5 e: `  CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
+ n7 B, n3 H1 [' _" L& C  CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去). Z" [* o& V) u) `4 F" G# Y
  三、逻辑运算指令
; N: J! e; d" @0 r$ w" n+ ]  ~# H  AND 与运算.
+ w' S/ X* ?5 ~' u1 \/ m  OR 或运算.& [' z1 d  d$ T! O0 G
  XOR 异或运算.0 B2 u$ t; T0 I* I; V0 n, |) g" o5 E" Y
  NOT 取反.9 M( ~& a* ]9 P5 b, |# j3 P
  TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
- }/ i# W: @4 o2 V6 \0 ^. e# y  SHL 逻辑左移.
/ g3 C. G5 h& O  p  SAL 算术左移.(=SHL)
$ J( s. f! ]; v' F/ w) c5 G9 [" y  SHR 逻辑右移.
/ d3 b6 O0 o+ Q; O9 H+ y, k- }  SAR 算术右移.(=SHR), \/ A0 v: t! |' ^1 t  p+ j# h+ J
  ROL 循环左移.% A: f- z% f1 d  N
  ROR 循环右移.' P( u* e3 |# g
  RCL 通过进位的循环左移.. H4 \- ~+ O, y: J  N5 B
  RCR 通过进位的循环右移.
! k+ e7 W7 j, X# c5 f  以上八种移位指令,其移位次数可达255次.0 a3 g/ r5 \7 @& b, |, S
  移位一次时, 可直接用操作码. 如 SHL AX,1.
1 {* D9 c! x! g7 q0 ^  v  移位>1次时, 则由寄存器CL给出移位次数.  t9 M7 h( t  Y; z
  如 MOV CL,04
5 Q4 w9 [- z' r- T6 Y5 {8 s  SHL AX,CL
0 Y2 T9 j% l% a" ^$ m0 A! p4 d  四、串指令
$ ^+ D  m+ [/ W7 ^2 t  DS:SI 源串段寄存器 :源串变址.9 o. }1 g  A1 {: g
  ES
. i) E5 v* p& A  I 目标串段寄存器:目标串变址.
9 d& _9 m- Q6 p2 F1 l/ v, d  CX 重复次数计数器.  _" ^3 C( t4 ^: n4 c* m
  AL/AX 扫描值.% [0 W7 S& M% T' k6 t0 `3 x9 S" |3 ?
  D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.+ b1 B1 O  d% L  X
  Z标志 用来控制扫描或比较操作的结束.* V3 P2 T$ K6 k) R3 ]
  MOVS 串传送.
3 p; `# O4 o2 s& ?3 C" ~4 J  ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
( C. }- y4 `% ?  CMPS 串比较.: Z) y# v+ B" m4 R
  ( CMPSB 比较字符. CMPSW 比较字. )
+ p- s3 K0 G2 }* }  G  SCAS 串扫描.
4 W9 D1 y4 e) I5 u  把AL或AX的内容与目标串作比较,比较结果反映在标志位.
; @) \9 H# w& `" D0 s% i: ~5 f% J" M4 o  LODS 装入串.
" N; B+ |0 V8 a7 h- `  把源串中的元素(字或字节)逐一装入AL或AX中.6 B" F! ]. P5 G) T
  ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
) `, u6 c9 E) r/ s7 {  STOS 保存串.  F4 r2 D* M' z8 ?
  是LODS的逆过程.) s3 N- N3 P+ D2 }2 l
  REP 当CX/ECX<>0时重复.
* p: B9 a' F9 b" e) l& p  REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.$ o6 H6 l8 O( ]! A
  REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
/ z, r! i* _9 T! m6 g  REPC 当CF=1且CX/ECX<>0时重复.
' {6 p- @  B4 z: W1 W  REPNC 当CF=0且CX/ECX<>0时重复.' `6 Z5 u# B  O$ {
  五、程序转移指令/ f. h1 }' i9 V3 N
  1>无条件转移指令 (长转移)% G( u( Q! W' A
  JMP 无条件转移指令
% t" _: x. f! \/ b* Q8 k  CALL 过程调用
0 g/ X8 W+ n- f$ C1 f  x* I  RET/RETF过程返回.- }! ~9 X* T; c" s, b) O
  2>条件转移指令 (短转移,-128到+127的距离内)# d5 l4 ~) d$ i4 w% e
  ( 当且仅当(SF XOR OF)=1时,OP12 O+ m# J, |/ C8 ^
  JA/JNBE 不小于或不等于时转移.
. m. U" c  c  K0 `  JAE/JNB 大于或等于转移.3 J  |; w( F3 V# C
  JB/JNAE 小于转移.
: N, h2 u3 \' X1 I7 G  JBE/JNA 小于或等于转移.
- ~- L) H, O0 a$ f  以上四条,测试无符号整数运算的结果(标志C和Z).( S4 ?  w' t2 {1 C
  JG/JNLE 大于转移.
4 _# m& W# q5 J  JGE/JNL 大于或等于转移.
4 E, F4 \/ K1 F. v1 E  JL/JNGE 小于转移.2 O  e. N( C" J. ]  ^* V9 J1 z
  JLE/JNG 小于或等于转移.
( t* p- O1 T: }' T. p0 [2 X  以上四条,测试带符号整数运算的结果(标志S,O和Z).
, Y7 W& d9 t& X3 m; H* S* O8 s  JE/JZ 等于转移.
: i- S' q! _& B3 r% E  JNE/JNZ 不等于时转移.
2 L8 `7 ^& z  ^3 t+ ^3 f. p' v  JC 有进位时转移.+ A! v4 o& w& Z9 s
  JNC 无进位时转移.
3 |7 _& D8 _7 H) O& F  n) L4 c  JNO 不溢出时转移.
( _! ~4 K0 t: Q6 u! f( ?6 g. ]  JNP/JPO 奇偶性为奇数时转移.0 @, P% o2 d( |1 R' ?
  JNS 符号位为 "0" 时转移.
& Z, E8 ^0 L# P) [8 ?+ n2 q, R  JO 溢出转移.( f$ C2 w2 g" q. V. N
  JP/JPE 奇偶性为偶数时转移.4 G7 k4 S" f6 r' c
  JS 符号位为 "1" 时转移.% F  Z3 O' [! a& `4 J
  3>循环控制指令(短转移)2 T, [" U1 w+ a
  LOOP CX不为零时循环." h; ^/ E" F/ N+ p: x5 S' M0 ?
  LOOPE/LOOPZ CX不为零且标志Z=1时循环./ i; x( {" A9 R3 a5 B. r% Y) b6 j
  LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
; U3 z' F* S( n( i8 _3 N* b  JCXZ CX为零时转移.- s  |. l! k1 ~2 y( {9 i" |8 ~
  JECXZ ECX为零时转移.
) w  z. W; p# d- t' y  4>中断指令
/ y) F, L. L6 Q! k* ~4 {  INT 中断指令1 o; K. |  y- ?- y/ U! r/ H
  INTO 溢出中断
8 [: b0 ^/ K- k  IRET 中断返回" g* k" g# d5 K7 d' i  D
  5>处理器控制指令
( E0 R. y4 ]0 c: V/ }  HLT 处理器暂停, 直到出现中断或复位信号才继续.+ l, d1 Y6 t9 i& b& }; U4 [
  WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
  D# {  J( D. Y4 @' [5 Q  ESC 转换到外处理器.7 f- s- k9 T& D# h* c) m
  LOCK 封锁总线.
$ f, O3 b( c4 Q  NOP 空操作.7 Z6 x! A. w$ x( J& m0 C
  STC 置进位标志位.5 y3 f' o* R: [/ Q
  CLC 清进位标志位.
! u) E6 v& s' ]4 ?) u6 A$ l9 n: R- o2 X  CMC 进位标志取反.
; B6 ^: s8 `+ d& F  STD 置方向标志位.
, o& n! i1 ~* ^; p( G9 e6 H+ W  CLD 清方向标志位.6 o( |3 {8 h# Z
  STI 置中断允许位.. m0 z! d' _$ z& c; D! x  P  Y  t
  CLI 清中断允许位.
7 `1 g* y# K6 Z; K, J+ G( [' {) v  A  六、伪指令
3 o  H2 Z4 ?& B! g6 K  DW 定义字(2字节).
8 s, b2 y) _) T- \+ P1 B  PROC 定义过程.
' ?' H. p: S) l" B; z  ENDP 过程结束.0 \/ E; r5 x3 V
  SEGMENT 定义段.
$ g4 u& F# F# T2 U: H5 p9 X  ASSUME 建立段寄存器寻址.4 _) _6 V+ m- a/ X- K% G8 }6 _
  ENDS 段结束.$ }7 F9 l4 q0 i. I
  END 程序结束.

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

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

该用户从未签到

2#
发表于 2016-11-29 11:22 | 只看该作者
捧场,谢谢分享!
. c" b; O1 |" K# P$ x3 o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 07:35 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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