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

8086CPU汇编指令速查手册

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
~~~2 Q' \4 \7 I1 n3 ~
8086 CPU 汇编指令速查手册
( S) ~5 i! `9 h' b6 v* m  一、数据传输指令
# y+ l3 `* [! X  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
' i, @2 s3 I; i0 `" R$ ?# ]  1. 通用数据传送指令.3 e! z* S' Z6 c1 J" H. `. E
  MOV 传送字或字节.5 f* C/ l. c' X6 |% \. V0 U# [4 a
  MOVSX 先符号扩展,再传送.
* Z' \8 T/ d, K  MOVZX 先零扩展,再传送.
3 X' a6 k( p* S6 v+ p& k0 T  PUSH 把字压入堆栈.
+ V6 P( q8 T4 ?5 l/ X+ p  POP 把字弹出堆栈.1 j" J# P6 k, {8 Z
  PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
9 h2 Y8 n4 X- R  v, p  POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
$ K+ ?* b; v/ h: ^0 |9 D  PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
% ~5 q: j- Z- R1 H  POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.) i4 j# }9 p. W. ~0 U, o
  BSWAP 交换32位寄存器里字节的顺序" U" }1 h: ^  R, i& [& D
  XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)8 O1 d6 g" ~- m5 T
  CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )) o. V6 l8 z  Z
  XADD 先交换再累加.( 结果在第一个操作数里 )
% F/ [! `4 Q& `3 e  XLAT 字节查表转换.- |" N6 X* }' h+ {
  ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即9 E' j: J$ }7 O
  0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
5 ]7 S. u( H  E% U  2. 输入输出端口传送指令.
( w" s0 t/ r1 V4 M3 w6 Z  IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
" }; I) l- }+ i0 ~! Y  OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )" b; y& Z/ U0 d6 v9 H# M, I
  输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
) g& n8 w/ s3 g9 X  其范围是 0-65535.
/ U9 z- o4 w6 P) O2 L- Y1 b! W5 a  3. 目的地址传送指令." R/ ~: g7 c' _5 z+ E1 `: h6 N! s
  LEA 装入有效地址.) |" L! Z( Y" n$ ?2 K
  例: LEA DX,string ;把偏移地址存到DX.: |8 O+ _# r, E  L
  LDS 传送目标指针,把指针内容装入DS.; J- p  e7 I0 \7 j9 Y: t. T
  例: LDS SI,string ;把段地址:偏移地址存到DS:SI.% N0 T. C4 r3 f& u  c- p
  LES 传送目标指针,把指针内容装入ES.
; d& j- ]9 v4 q' G1 X7 J  例: LES DI,string ;把段地址:偏移地址存到ESI.- @- g8 M8 _+ @+ f2 r* B) X2 S6 f/ d
  LFS 传送目标指针,把指针内容装入FS.' n' o+ o! R) H* k8 v: f
  例: LFS DI,string ;把段地址:偏移地址存到FSI.
/ }, Z7 m2 r) {7 f  LGS 传送目标指针,把指针内容装入GS.6 Z1 \9 [& W* d7 s+ M+ C9 u8 N* T
  例: LGS DI,string ;把段地址:偏移地址存到GSI.
6 i% @7 l- s% ]2 k" {2 \; S  LSS 传送目标指针,把指针内容装入SS.
% N9 y! `. {3 D  例: LSS DI,string ;把段地址:偏移地址存到SSI.
- ]' A$ h* [; w# y0 w5 l  4. 标志传送指令.
, ]; s1 G' J- |/ o$ `5 B  Q  LAHF 标志寄存器传送,把标志装入AH.
1 c2 O  i1 p. M: I  SAHF 标志寄存器传送,把AH内容装入标志寄存器.' s' z9 X# b! z$ O+ d
  PUSHF 标志入栈.
. \$ N! d) W2 n6 i" R  POPF 标志出栈.9 p* g( e( L5 \6 `8 u
  PUSHD 32位标志入栈.
. q! W' S( J3 K% o# a! d/ i3 A2 n  POPD 32位标志出栈.
0 x" X& W; \$ _9 D; `  二、算术运算指令6 [5 T& g2 R% ]5 t+ B
  ADD 加法.: j8 }: u+ w, s3 R) x- k( k8 m
  ADC 带进位加法.9 ^3 x4 H$ c0 S
  INC 加 1.
' V7 g( w* ?- L9 u  AAA 加法的ASCII码调整.
( W1 S' t6 V5 C: o% t4 k+ i/ u  DAA 加法的十进制调整.
1 D" E+ `" J; g! F  SUB 减法.- T( s  k( @/ Z# n
  SBB 带借位减法.( O$ d, t4 O5 p4 w, S2 I& S
  DEC 减 1.2 W! ?+ }8 U: Y4 O* ^' ^2 O0 K
  NEC 求反(以 0 减之).  a( R7 f* b0 e7 ^. R9 n- \/ W, ^
  CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
: _. ^  X+ Q( A: y0 c6 ?' _( Q  AAS 减法的ASCII码调整.
% Y4 `% F. g8 o6 ]0 p: l, Y  DAS 减法的十进制调整.7 g/ Y% Y; F: K# e. b8 U5 ^; `/ c: j5 w
  MUL 无符号乘法.# o1 {9 C% u/ @# J
  IMUL 整数乘法.% ?  L: d$ Q% `1 }) [& T1 K
  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
1 c, z  p5 [7 _% B, Q3 }7 B8 [  AAM 乘法的ASCII码调整.
# ^; J/ a. ^0 N6 ?  DIV 无符号除法.* g5 {- R- e; A7 v
  IDIV 整数除法.
& f- Y0 w2 x+ K) G, N6 y  以上两条,结果回送:; j+ a5 A2 D3 b$ A3 R2 c
  商回送AL,余数回送AH, (字节运算);, J( I7 c' v+ t4 k  P. |
  或 商回送AX,余数回送DX, (字运算).# C' L. j( E8 o% j0 T
  AAD 除法的ASCII码调整.
- M3 T2 n) F/ ?( d9 g8 i  CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)8 B" P1 |4 X. T# _8 z6 M1 q6 \" r
  CWD 字转换为双字. (把AX中的字的符号扩展到DX中去); k1 k, M: P) i# N' Q' x
  CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)! M) Y# e& N) F$ P8 Q7 d# O
  CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
$ Z, b) _6 n/ a' {' f) Z0 f3 N" K  三、逻辑运算指令5 O) e9 Y0 `8 M- I+ i% L
  AND 与运算.6 y9 T# y. H# g- a
  OR 或运算.
. b7 }/ ~. F, u8 Q) e+ a8 I3 {  XOR 异或运算.
, B+ }; b+ K6 o$ J: a7 S  NOT 取反.: N7 t: T6 u) Q" J) E% j2 B/ W5 l
  TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
5 B/ z3 O$ C  n) @  SHL 逻辑左移.
+ E3 D5 _) U4 s" T* W. i  SAL 算术左移.(=SHL)
  i- g' i) l* y! `. l; A  SHR 逻辑右移.! q3 q& i5 V6 h, z" b; h1 H% p
  SAR 算术右移.(=SHR)
4 B1 t) h  M8 U  ROL 循环左移.
. a' [/ f/ b  E7 R  ROR 循环右移.
1 Y6 F$ @5 d; l2 p: {  RCL 通过进位的循环左移.7 L+ k1 C7 I1 U2 S: K1 M1 M
  RCR 通过进位的循环右移.
$ U7 O+ t& Q  M5 q2 b2 W5 U. H" _  以上八种移位指令,其移位次数可达255次.
& C& L+ \* x; u: u  移位一次时, 可直接用操作码. 如 SHL AX,1.* U+ I. J4 ]9 B- p9 |; [
  移位>1次时, 则由寄存器CL给出移位次数.
8 W- C7 Y# s/ b  如 MOV CL,043 r* H& j! W& v) E& t
  SHL AX,CL
' T9 s( t5 p% f; B0 b) x  四、串指令7 x1 y* Q0 [' s* ^6 R0 M
  DS:SI 源串段寄存器 :源串变址.
2 J0 f( t$ h* M4 Z( y& M  ES1 \; E  t5 ?; B& L  X
  I 目标串段寄存器:目标串变址.
  w8 L7 u+ _5 F0 p1 C6 b' u  CX 重复次数计数器.$ d* S$ i  L; c+ L
  AL/AX 扫描值.
, F' V( Y& u* R9 h4 U/ r  D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.' `7 V0 {" `: T9 y6 L: @# G3 n+ x" @/ p
  Z标志 用来控制扫描或比较操作的结束.
9 @: j% O! |0 ]  I2 H: t  MOVS 串传送.
: [0 z9 X2 P9 P! }  ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )' I3 m% @8 r3 H$ X2 F* L
  CMPS 串比较.
: z( B& q: _% o" B2 @) y  ( CMPSB 比较字符. CMPSW 比较字. )
$ k7 r: ~7 e  d1 b4 ~! B6 F0 o8 u  SCAS 串扫描.5 [9 z9 ]0 F% \
  把AL或AX的内容与目标串作比较,比较结果反映在标志位.
( k- N+ i& T7 d" d/ s  LODS 装入串.
/ |# R; e  o* e4 j+ }6 m) H  把源串中的元素(字或字节)逐一装入AL或AX中.
" m2 U! t# u: n/ q/ |5 }  ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )$ {, G0 @, a0 x6 k5 K6 C8 R
  STOS 保存串.8 u& D0 j2 C8 M# Z) y, N
  是LODS的逆过程.* z6 u& j$ v6 p) _
  REP 当CX/ECX<>0时重复.
4 |& g: O9 J4 _$ b# O( l: i- X! ]  REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
& y( A7 [0 W& F5 Y/ l' d  REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.* g+ d/ J) X) x$ T- L) F8 `
  REPC 当CF=1且CX/ECX<>0时重复.5 I9 n7 Y" {0 M0 q6 N
  REPNC 当CF=0且CX/ECX<>0时重复.
2 b# F% K; R6 D1 M  五、程序转移指令
8 a2 s! h6 z, N9 I% H  1>无条件转移指令 (长转移)0 G' f8 ^- B3 U
  JMP 无条件转移指令
! h3 u) N% K+ a  CALL 过程调用
( r9 j# B% F$ P. b* @% t  O  RET/RETF过程返回.; R2 M. Q! X5 {
  2>条件转移指令 (短转移,-128到+127的距离内)
: X2 D& v3 X' f. X* p/ j) j  M7 a  ( 当且仅当(SF XOR OF)=1时,OP1
0 B3 P& ?; I* o. g  A0 G  JA/JNBE 不小于或不等于时转移.+ X9 _- B# V  E5 [$ P5 O
  JAE/JNB 大于或等于转移.3 }' g- n  f0 L* ~  H
  JB/JNAE 小于转移.
, I7 ]6 R* y5 B3 J  JBE/JNA 小于或等于转移.
( @7 z, [- a7 [8 q7 c  以上四条,测试无符号整数运算的结果(标志C和Z).
5 k( C0 ~% t: N# F0 n( ]% S) ~2 X  JG/JNLE 大于转移.  V+ w1 P3 }9 b, f. B1 K3 B
  JGE/JNL 大于或等于转移.
6 W5 f4 a: Z/ t  JL/JNGE 小于转移.
8 x  r% J3 N9 k1 I* x6 U1 d  JLE/JNG 小于或等于转移.
5 B5 s. [+ M, D, D2 c: ~  以上四条,测试带符号整数运算的结果(标志S,O和Z).
! v0 A  f# _( U( ~; {" [( ^) s  JE/JZ 等于转移.
5 J- I' r5 ?" S: q# c  JNE/JNZ 不等于时转移.
8 `: a6 R8 T* V- J( u& ]  JC 有进位时转移.' n7 T/ t( w- V$ j2 k
  JNC 无进位时转移.
, ]( b& S- }' C) Q8 d; x" Z  JNO 不溢出时转移., p  m  ^" u3 z/ S' `% o4 E; r
  JNP/JPO 奇偶性为奇数时转移.
3 F$ F# U5 i5 e; m$ I7 z6 r0 y' w  JNS 符号位为 "0" 时转移.
5 k3 u  `5 a$ _- U) U3 |9 v  JO 溢出转移.
; X+ z) r4 x: \  JP/JPE 奇偶性为偶数时转移.1 K) T  _/ B4 p* V  S* A( n% R5 [
  JS 符号位为 "1" 时转移.4 p+ z+ g) @3 A0 y* o& @7 v. P0 i9 x
  3>循环控制指令(短转移)
: ?% e& A8 u" ^, |, D  LOOP CX不为零时循环.. t- d' b# {- A1 T9 c) y
  LOOPE/LOOPZ CX不为零且标志Z=1时循环." H% c$ }; b2 P% u
  LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.; V2 N0 [: I! Q! Q" |
  JCXZ CX为零时转移.
/ ^9 G8 v3 S: F* ]# a  JECXZ ECX为零时转移.
6 H& I0 j. `$ L/ v  4>中断指令
! \! s# i2 ?' K5 @8 E  INT 中断指令  _$ l0 i" c3 N0 g
  INTO 溢出中断, X! d8 M  W4 ?/ h2 G6 k
  IRET 中断返回
9 P& @5 z0 z) c8 x  5>处理器控制指令3 N+ w1 [9 f$ p2 |. D9 C* z
  HLT 处理器暂停, 直到出现中断或复位信号才继续.2 ]( Z( k1 o' H
  WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.+ Z0 J8 H+ Y) M% u* \6 O
  ESC 转换到外处理器.0 f0 H4 S/ w' k. B% g
  LOCK 封锁总线.& I  l4 D( f/ _( k& h; N% M
  NOP 空操作./ d* G7 ~/ f( J! i$ E# H% r1 ~  w
  STC 置进位标志位.
  Q  C; i; @. e5 H0 B  CLC 清进位标志位.
* J4 ?6 t% T, O6 c0 ^" c( n5 w/ n  CMC 进位标志取反., J. u0 g' N6 N
  STD 置方向标志位.4 K/ ~  i3 e6 K& W- G& f0 N6 b
  CLD 清方向标志位.# h* _" D( z2 t* U3 i- u
  STI 置中断允许位.
6 v% y  ?  b/ k, c. \, H" o  CLI 清中断允许位.
0 O) h( z8 ~# P  p- Y# P  六、伪指令3 b0 ]! |. Q; J& z, B0 U
  DW 定义字(2字节).% F* I) H' D% G5 \6 ^; }0 P( Q
  PROC 定义过程.
4 b( n5 |( y6 l6 O; P9 x  ENDP 过程结束.
4 t2 x2 ^+ [: P0 Z+ e$ T& K  SEGMENT 定义段.
, e" y, s5 i5 U  x/ z" b$ I  ASSUME 建立段寄存器寻址.
: ^7 P* E+ E4 p% N4 |: z5 _% L  ENDS 段结束.$ y! t- t9 K3 I! j4 o% I
  END 程序结束.

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

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

该用户从未签到

2#
发表于 2016-11-29 11:22 | 只看该作者
捧场,谢谢分享!
+ z4 D3 b. Z8 L- i) K
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 12:01 , Processed in 0.171875 second(s), 27 queries , Gzip On.

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

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

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