后期资源网|非编软件网|杉宫竹苑|非编插件|高清视频素材|音频素材|非编软件汉化

 找回密码
 立即注册
后期非编系统发布及其详细简介后期非编系统VIP专享下载区影视后期非编模版免费下载区网站注册及其办理VIP业务说明
查看: 766|回复: 0

[教程] 8088 汇编语言速查手册

[复制链接]
发表于 2013-1-4 11:30:53 | 显示全部楼层 |阅读模式
一、数据传输指令 : w4 l. T0 W' |1 G( b5 P
─────────────────────────────────────── 4 y+ ^8 e- e. F- B$ i# G" a3 j" j8 e1 E9 B
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. : Q; ~4 F/ z$ t+ B3 }
1. 通用数据传送指令.
8 x6 W+ Y2 n9 t, jMOV 传送字或字节.
7 l# m8 {% i4 \6 u+ l8 lMOVSX 先符号扩展,再传送. 1 x% p6 J0 e( D% |# [
MOVZX 先零扩展,再传送.
  p/ x0 T$ A, k1 p2 UPUSH 把字压入堆栈. 6 |' i( I- B2 }
POP 把字弹出堆栈.
; T* U3 P" b. E! _2 ~/ U) V* YPUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. # i9 Y2 j4 W0 s8 k. c
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. 6 k- {5 @$ m) W1 h, ~6 K: W' J
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
$ V7 t( E* Z  D, F- S3 z6 ?POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
( h) f' ?4 M' O9 o  ]BSWAP 交换32位寄存器里字节的顺序 ) @' v7 E& s' j
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) 4 Y1 \; Z% R2 @- R; H
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
, @& Z: e/ X! _8 XXADD 先交换再累加.( 结果在第一个操作数里 )
- I5 A; K! D1 Y3 O( B( e" zXLAT 字节查表转换.
2 B& h# P( l2 {. E0 [- Y/ p  ~) c/ g── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 $ p& q" b% |0 r6 f* Q
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
( K! g3 g; A( A$ l+ V9 N2. 输入输出端口传送指令.
  l4 L; s8 P6 F2 ?2 jIN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
! ]% S( P- l- }- [- m5 nOUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 ) 5 E9 n$ @5 |+ A5 Q2 [/ R7 g1 s
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
: V$ ~* G) c( c; }5 [8 E其范围是 0-65535. 4 T4 L# z5 b+ e: N3 I+ b/ s! j6 k
3. 目的地址传送指令.
+ Q4 j+ I# C) m8 zLEA 装入有效地址.
5 U7 q3 H  \( n例: LEA DX,string ;把偏移地址存到DX. / S2 _0 E6 ?+ ~3 K9 j1 m7 E
LDS 传送目标指针,把指针内容装入DS.
, w  W6 l2 C0 p例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
) z$ n& p1 C' }4 k! i" t2 r+ tLES 传送目标指针,把指针内容装入ES.
0 W) T& i# Z  b7 A6 M例: LES DI,string ;把段地址:偏移地址存到ESI. - ]7 m; B# S6 {9 \
LFS 传送目标指针,把指针内容装入FS.
: |" B% X! j. v+ Z1 d7 \  {: W例: LFS DI,string ;把段地址:偏移地址存到FSI. 8 s  B. q7 p# a( c3 ]" m3 j
LGS 传送目标指针,把指针内容装入GS.
, R  [+ G9 x, t5 i7 Z! N例: LGS DI,string ;把段地址:偏移地址存到GSI.
$ ]0 Q& Q+ X; T( X  Y6 g2 D# p. ?LSS 传送目标指针,把指针内容装入SS.
* h/ J8 d; R+ t7 _1 e例: LSS DI,string ;把段地址:偏移地址存到SSI.
; i! A$ h4 R1 ^, a. f. Z  U. m4. 标志传送指令.
7 G; r. v3 Y; c. z3 u9 OLAHF 标志寄存器传送,把标志装入AH.
' l9 b( |" }+ aSAHF 标志寄存器传送,把AH内容装入标志寄存器.
3 ^$ }+ U4 r8 C9 a! CPUSHF 标志入栈.
* `4 T4 E4 M0 xPOPF 标志出栈.
" q5 j# E; S6 R3 O1 q- qPUSHD 32位标志入栈. " }+ M$ w3 s+ n
POPD 32位标志出栈. + b" w- `- A* _3 d" ]
2 t" N3 S/ r% V- X  P+ O  T( T
二、算术运算指令
; n1 p% [) h0 @) }3 c+ M─────────────────────────────────────── 4 C% h( k4 O/ W9 e* W! C; T. |
  ADD 加法. ) W* v- |; ~6 w% s- F" k- _; Q% v
ADC 带进位加法. ) H; R& M2 z( s6 g; Q1 \: L1 j
INC 加 1.
' U5 q1 f: E2 x/ n( P' Q* EAAA 加法的ASCII码调整. ' ]: v% d' z( ]' _. i  Y# a+ h
DAA 加法的十进制调整. 0 ~6 t9 {# G, X- D) I
SUB 减法.
3 ~- ~0 Q6 k) K$ s: n3 `) XSBB 带借位减法.
. G+ Y2 y! B' I. V3 w  F# HDEC 减 1.
4 q5 t, y( L4 h( k4 ]! L  o" B/ xNEC 求反(以 0 减之).
7 I1 T- z  a% b3 k* XCMP 比较.(两操作数作减法,仅修改标志位,不回送结果). + Y4 b8 f! Z3 I- q1 N
AAS 减法的ASCII码调整.
1 U# @' h% ]; D8 R. EDAS 减法的十进制调整.
/ Y6 S( k* R% L" i- H) jMUL 无符号乘法. ! e- V3 i0 I- U6 m: R' W  _/ k2 r
IMUL 整数乘法. 9 v' K& a. n; \  }4 v( l* @
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
0 k3 o; T1 p3 S( q' jAAM 乘法的ASCII码调整.
" o! W$ x  }1 dDIV 无符号除法. + S8 d) Z8 H7 H  e, |6 T: a
IDIV 整数除法. 0 I( D1 X' K* {- {, M
以上两条,结果回送: ' V0 m/ Y1 {7 Z* o( E+ f# y1 i
商回送AL,余数回送AH, (字节运算); / l& O( p. m; V
或 商回送AX,余数回送DX, (字运算).
# ^$ |2 H. a5 ~8 Z* w$ N& {0 }2 ~AAD 除法的ASCII码调整. 2 }+ j9 ~4 U. R5 M
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
4 L& P, Y# ^0 u! tCWD 字转换为双字. (把AX中的字的符号扩展到DX中去) - W& ]! [/ i0 `
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
0 O  x' _7 c' g- F  ?& ]1 `, QCDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
. |6 v/ B) E+ ~8 C1 F. t
5 k9 j: h1 F$ Q$ q7 t8 E$ i三、逻辑运算指令 ( S  M9 W8 d+ b! d' c
───────────────────────────────────────   Y/ _: }' X, l$ ?0 _9 `
  AND 与运算. 6 M- ~$ O% I& _
OR 或运算. ! I* d' J, B6 g3 B& e0 Y; Y
XOR 异或运算. - G- R1 `& @/ P, ^' M$ w. Y2 n
NOT 取反. 4 T  \; ?! f$ Z* p2 l
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). 2 _8 ]/ E& L% w( J. e
SHL 逻辑左移. # _3 D3 _6 Z6 ~2 T0 h, Q
SAL 算术左移.(=SHL) , h" M  s' u: U0 n
SHR 逻辑右移.
% D! U$ T, Y7 d6 i2 H" W7 rSAR 算术右移.(=SHR)
! o& j1 K* s' y: u1 \2 \4 BROL 循环左移. % t  H5 ^" G" L- I, p5 i7 D
ROR 循环右移.
; r  r% W$ E$ P1 T% |  a3 I7 G" BRCL 通过进位的循环左移.
  {  \+ A1 \: u9 G( g( mRCR 通过进位的循环右移.
0 a; I9 ]6 |! v" \6 i8 }以上八种移位指令,其移位次数可达255次.
. s  o* s* c" i+ h移位一次时, 可直接用操作码. 如 SHL AX,1.
4 S- M4 t  `  A3 o3 p移位>1次时, 则由寄存器CL给出移位次数. 4 s* [) v! C' }0 M
如 MOV CL,04 - r- V2 g) i4 w8 k% X
SHL AX,CL
' ~4 [+ w6 X) \4 }* T0 x1 H/ c5 O% a' B
四、串指令
0 @0 X) ^7 V" q───────────────────────────────────────
  u9 k; I0 X3 G1 } DS:SI 源串段寄存器 :源串变址. ' b) t& [$ @; E
ESI 目标串段寄存器:目标串变址. 9 ]: T' }/ @0 ^! n: {8 }& _" j4 {/ M
CX 重复次数计数器. ' f; ]9 t' b4 V9 k
AL/AX 扫描值. : m) C* {0 W5 U/ k* U" F, `
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
$ z0 Q, e  t; L% S7 {2 d1 \$ JZ标志 用来控制扫描或比较操作的结束.
/ R% ~' |7 ]8 e1 o( `# H: v, T1 x- ~MOVS 串传送.
# I7 W2 {' r) @5 r) W7 ]3 l) y( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
1 Q8 J: A( U& l2 U1 r% ?" L( lCMPS 串比较.
- t" B( p' F2 u( ]0 D( CMPSB 比较字符. CMPSW 比较字. ) 0 |8 V1 s0 Z7 Z' ?
SCAS 串扫描.
6 U' s9 ?5 Y6 ]# ]/ [6 p把AL或AX的内容与目标串作比较,比较结果反映在标志位. # v! [/ u- w. `2 W- h- `; C" G3 J
LODS 装入串.
6 |* f! \, s4 l6 M& @/ K把源串中的元素(字或字节)逐一装入AL或AX中. 7 I/ Y  d6 S6 R/ g. _# j- ?9 s+ ]
( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) ( [/ |  C4 E5 J1 Q
STOS 保存串.
8 ?# H9 V" }0 m. {1 |; `! F0 E) U是LODS的逆过程.
+ t$ T& D! ^" q% }7 ^" c' `REP 当CX/ECX<>0时重复. 8 {( [' a( t  n7 Y2 R5 ?
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
- M5 m3 s# ^' cREPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
# _. E& F7 r6 i, y9 oREPC 1 |& |. i& l) Q" ^" c
=========================. M2 h8 @, W+ q& ?: w4 H
后期资源网,打造没有广告、免除隐藏回复的全开放式影视技术交流平台。 你的所求就是我们服务的宗旨!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|后期资源网

GMT+8, 2024-5-3 07:27 , Processed in 0.123429 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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