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

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

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

[复制链接]
发表于 2013-1-4 11:30:53 | 显示全部楼层 |阅读模式
一、数据传输指令 ' ?& k6 }* I% K3 x0 S
───────────────────────────────────────
; m; d, g$ W8 p: w! V; n. B它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
8 I4 P2 I: v$ j+ v$ ?7 v% ?# X+ s1. 通用数据传送指令. 8 a+ [6 N2 P, d2 H5 C- L6 K
MOV 传送字或字节. 9 k1 P* t! \; Y+ Q
MOVSX 先符号扩展,再传送.
" V& h! J4 _8 n* U: _7 {7 Y, V1 @MOVZX 先零扩展,再传送. 0 d1 p( I6 T" l7 o$ O4 v
PUSH 把字压入堆栈. , d& {# F. C1 a* H+ c. A6 O4 l
POP 把字弹出堆栈.
. q# t6 s& I  q9 ?* [1 B4 Q5 p$ aPUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. 4 J8 [7 ^% ]& a
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. + P+ o# |( [- W7 a% r
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. 9 j, Q0 x7 C! f0 N2 i8 x1 R
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
& n1 K2 p3 |) m$ @. p3 R- M- vBSWAP 交换32位寄存器里字节的顺序 - Q. ?7 i& z# j4 X; Y5 c
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) 0 d  r, L) ^+ n$ O
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) . F/ B1 J0 o% g; E! y
XADD 先交换再累加.( 结果在第一个操作数里 )
" A9 y, _. M+ [) X9 [- [( mXLAT 字节查表转换.
/ J& m1 c: z9 q── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 ! r8 l  A5 Y% h
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL ) 4 B* k2 d4 T. y! h
2. 输入输出端口传送指令.
* h7 x  k! G0 V+ K1 Z( ?IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) * V8 H5 J2 n$ Q% N% o
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
  b) e. V& }: Y8 v( ^' }2 x( c7 j输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, & q' e, }/ n. H' q" m: Z
其范围是 0-65535.
& n# Q" o2 b, u; _5 O3. 目的地址传送指令.
; @7 F+ c1 i7 l0 x  ]LEA 装入有效地址. : }4 v2 e! P  v& S$ K
例: LEA DX,string ;把偏移地址存到DX.
; X6 W8 U/ [5 g7 U" zLDS 传送目标指针,把指针内容装入DS. 6 I0 z# Q) c) }- S( r
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
3 V+ t8 K: f  h  W! u8 Q, lLES 传送目标指针,把指针内容装入ES.
' u3 m: {; x5 W+ ?* y: X7 e例: LES DI,string ;把段地址:偏移地址存到ESI.
. s  }( C) m! _9 W# d5 OLFS 传送目标指针,把指针内容装入FS.
- J0 o1 U. j  F9 r* N例: LFS DI,string ;把段地址:偏移地址存到FSI. 1 [6 B7 C7 `. O$ E3 {3 j
LGS 传送目标指针,把指针内容装入GS. 4 L: h  H! H/ x' A" v1 a
例: LGS DI,string ;把段地址:偏移地址存到GSI. 5 P/ W, a9 V1 q8 v
LSS 传送目标指针,把指针内容装入SS.
. Z% c3 }! f, T$ G例: LSS DI,string ;把段地址:偏移地址存到SSI.
0 }) U7 f& A1 x! g2 [8 F- V3 B+ w# ]4. 标志传送指令. . y9 [* c+ y! V7 o; f" K* b
LAHF 标志寄存器传送,把标志装入AH. ) S! ~" o# _) G1 G; R
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
& V# X) w: P6 j" o3 K/ iPUSHF 标志入栈.
9 n( V) X3 l$ C; s  xPOPF 标志出栈. $ @# G2 O# m) f+ p# Z4 k/ k
PUSHD 32位标志入栈. ( j4 r/ j# N3 z3 W% E
POPD 32位标志出栈.
9 f$ {0 O4 E  c$ t* Q) g. F+ d, F' w# U; y5 y: ]
二、算术运算指令 : s. ]8 x( s+ [0 H; E
───────────────────────────────────────
  E# }9 H( j# @; ?+ |  ADD 加法. 2 b! j- O4 c+ P+ i2 y
ADC 带进位加法.
/ k: z! H% e2 n' B% iINC 加 1.
& Q( Q/ X) x3 V" K* X' ^  gAAA 加法的ASCII码调整. ' r9 S5 S7 o2 B
DAA 加法的十进制调整.
) U" x1 I. M" v/ ASUB 减法. - |" z  r4 _: b8 H- Y; b
SBB 带借位减法.
, q- E. J# {1 W% V9 j& gDEC 减 1. ! \! X3 }4 S6 K
NEC 求反(以 0 减之).
& Q& r5 D+ `3 B$ Y8 P& e$ hCMP 比较.(两操作数作减法,仅修改标志位,不回送结果). 6 w/ G- Y1 g1 P9 k0 G: _
AAS 减法的ASCII码调整.
5 q0 ]) w) B, ], E; B3 TDAS 减法的十进制调整.
/ m" V1 f9 U) h: d+ h) AMUL 无符号乘法.
  i$ \# [# J" P9 ^/ d, Y( uIMUL 整数乘法.
; m+ G4 a% h0 ~8 q" ~以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), 4 J8 t& `) G. x( x) s
AAM 乘法的ASCII码调整.
8 p! |0 X; g$ {  |& e' j7 X; mDIV 无符号除法.
0 i! ?' j/ a' o6 i( fIDIV 整数除法. / D: c5 ~; C+ d0 `
以上两条,结果回送: % Z0 \8 k8 F+ r# m) N4 D. k
商回送AL,余数回送AH, (字节运算);
* ~+ N6 N# D8 L5 g或 商回送AX,余数回送DX, (字运算). 6 M- L( J# [$ ?% s$ k6 X
AAD 除法的ASCII码调整. 5 i- Z* E9 Z9 t9 m
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
9 G8 a( `4 ?6 `' }CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
$ w4 ^! V7 L6 _7 QCWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) 3 _5 e; y8 V" q# m; a" A
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) " O! X" x, g" I' Q- b. D9 X4 H

! u( W" `2 X: N' s三、逻辑运算指令 ( j( i& C5 a/ ]* K: h, P/ s( l
───────────────────────────────────────
6 u* P4 w9 @) l) e$ y1 R) Z; T* [  AND 与运算. $ z9 G# V4 }( w" R% U
OR 或运算.
4 [/ t2 z+ G, T! W# V/ o' yXOR 异或运算. & P0 P" p; c. {8 ]+ \# e) \4 H
NOT 取反. ( ]" N; \& x* K
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
8 [' o0 ~7 N$ HSHL 逻辑左移.
- [/ ]  i/ c* y, \3 FSAL 算术左移.(=SHL)
4 P6 S1 q$ s$ n# Z; tSHR 逻辑右移.
5 V5 N* z0 o3 S& M& o/ F) PSAR 算术右移.(=SHR) & ?+ ^, U$ _7 ~; Q
ROL 循环左移.
& L% @; P" O, F! q$ Y/ yROR 循环右移. 8 a* ~4 w3 F2 @8 a, N6 F: n
RCL 通过进位的循环左移. ' q# o( M6 b8 k9 K4 y
RCR 通过进位的循环右移. ) [. h2 H, D; ?) F( m  B+ X3 v4 ?! X; h
以上八种移位指令,其移位次数可达255次.
0 }. l" \* i4 [+ x+ K移位一次时, 可直接用操作码. 如 SHL AX,1. 0 P5 a3 J) k. T
移位>1次时, 则由寄存器CL给出移位次数. % f/ w( F; j! {2 S7 b# X+ ?
如 MOV CL,04 , G  m4 L1 h5 P& P
SHL AX,CL
/ C6 S+ E7 a3 T$ `  C  @* K/ x; n6 m+ W
四、串指令 1 ~+ m) c' _+ l
───────────────────────────────────────
7 a. o: w. L( \ DS:SI 源串段寄存器 :源串变址.
$ Y; E" P: R0 V( U' YESI 目标串段寄存器:目标串变址. ' @5 S/ ~6 e/ B2 P$ R: t
CX 重复次数计数器.
8 N5 u5 a' \% ~8 W0 DAL/AX 扫描值.
% S& P: e* B7 X6 A, W- CD标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量. $ ~1 c% [# ]+ Q  A0 C9 ^
Z标志 用来控制扫描或比较操作的结束. 2 X8 ?- A' w3 I4 q+ `% w6 G
MOVS 串传送. - `3 J3 T; s) W7 ?3 i
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) 7 ?4 }( d( e) c! x- _  P, _
CMPS 串比较. 6 E" r4 V) j/ V8 X8 T% M9 D
( CMPSB 比较字符. CMPSW 比较字. ) ; D3 G& X; {/ d( Z8 D# G% U
SCAS 串扫描. 4 R& C' V' J/ |- p/ G
把AL或AX的内容与目标串作比较,比较结果反映在标志位. ( T1 [# r4 x$ M! q4 v
LODS 装入串.
+ M5 N/ o6 g( M' S. D- Z/ d; A' y把源串中的元素(字或字节)逐一装入AL或AX中.
3 R5 k: `  m# T. A, w/ n( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) 4 v- f' M- U9 G0 F' w4 }
STOS 保存串. / J. _5 A6 r( E
是LODS的逆过程. # I/ @% ?1 G3 T2 d( e
REP 当CX/ECX<>0时重复. ! @" \3 J% e, X/ {" @! U
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
# j* g. v6 ?# q; V; ~6 X# J7 ~REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
3 }' _  w5 g9 TREPC
9 L, U  Y* y: u=========================
" F* L$ E+ L" ?  u
后期资源网,打造没有广告、免除隐藏回复的全开放式影视技术交流平台。 你的所求就是我们服务的宗旨!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-18 22:42 , Processed in 0.110092 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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