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

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

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

[复制链接]
发表于 2013-1-4 11:30:53 | 显示全部楼层 |阅读模式
一、数据传输指令 7 ~2 j- g5 D& k2 \! L. @/ v$ A
───────────────────────────────────────
6 M( Y1 q/ g5 R它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 0 N2 L2 R5 h( [/ m0 u# x8 w
1. 通用数据传送指令. ( O. U4 u6 X5 r. D  ]7 [8 f4 U
MOV 传送字或字节. 1 Y( {6 `* B  ?; `1 b2 e: a
MOVSX 先符号扩展,再传送.
5 B# y- D9 m8 `$ _, ]* nMOVZX 先零扩展,再传送.
, g6 N) E& o, Z/ k$ {2 c' ~PUSH 把字压入堆栈. . w( l: n  g2 j; S6 c; _
POP 把字弹出堆栈.
# s# ~7 N9 A& j8 ~PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. 1 y+ `! C8 k7 M, r8 s
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
; d! u. Q8 d% r1 s2 LPUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. " J6 @* t5 I% d2 a2 Z' t
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. " V; {6 t+ o6 a4 v1 t
BSWAP 交换32位寄存器里字节的顺序
( ]* E1 g8 J6 N6 W6 A2 sXCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) 8 l3 `% t( s  b" W  z) q
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) + _9 }$ \* x  v
XADD 先交换再累加.( 结果在第一个操作数里 )
- M' a) w4 M& p5 ~) j) RXLAT 字节查表转换.
" O  k- `! C; y( [. T6 D+ @── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 7 z! Y% a7 O. ]/ s1 N
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL ) " u2 k4 C4 C  s. v( g  n9 m# ^
2. 输入输出端口传送指令.
  X. O0 ?+ S6 y3 [IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
  `( F( i. u/ k4 \% {# S7 O9 COUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 ) 9 }+ M  N; K! e7 x4 e& h  Q  w$ v
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
$ o$ W$ d* @( T/ p" c+ ^4 [其范围是 0-65535. ( i6 i. S& q$ x/ p# o, R
3. 目的地址传送指令.
# x; v, @( ]5 ~9 |3 K7 L# kLEA 装入有效地址.
4 |& A+ b$ c! S/ R例: LEA DX,string ;把偏移地址存到DX.
, ?( d2 ~" E4 LLDS 传送目标指针,把指针内容装入DS. + W2 ?9 @+ ~8 O! ?- K" L
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
- ~9 X: `* c: B# W4 i" CLES 传送目标指针,把指针内容装入ES.
' m; z; g5 ^- [; ~) ]例: LES DI,string ;把段地址:偏移地址存到ESI. & g* l7 v/ y2 J
LFS 传送目标指针,把指针内容装入FS.
1 u2 g2 N; X% v- i例: LFS DI,string ;把段地址:偏移地址存到FSI. $ w! H4 D& z; L+ [) q" S: w
LGS 传送目标指针,把指针内容装入GS.
( P' [; ?) m% ~" `+ \* x: _& u例: LGS DI,string ;把段地址:偏移地址存到GSI.
; O$ I3 b! R2 F! l& b$ b) }LSS 传送目标指针,把指针内容装入SS. 7 {" T) G1 U5 R7 u$ e/ w! p
例: LSS DI,string ;把段地址:偏移地址存到SSI.
( E% ^  L( \: a( t9 \/ |4. 标志传送指令. ; _3 \1 Y0 I3 @. _" Y  N/ K0 f- w
LAHF 标志寄存器传送,把标志装入AH. 4 ]& \" i4 N4 Z* T3 S' Z& E4 A; W5 w2 g
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
, {$ ~5 a7 f8 d( p3 D" T7 O; W* kPUSHF 标志入栈. ( ~& W) `/ Q: N$ _, k# y
POPF 标志出栈.
# q! F0 F, C* o8 e+ t: VPUSHD 32位标志入栈. 7 A3 F& O" q; {$ }* ?% F
POPD 32位标志出栈.
, r" q- ?* g9 J/ b6 C% ~7 f
8 ^  I+ B* N* f4 K$ ]% g* V0 K二、算术运算指令 ( c. K! t; `8 v& D) e1 e
───────────────────────────────────────
6 `8 Z" _7 e1 O- U4 N  ADD 加法. * T4 a+ c+ E7 V  L0 B+ ]
ADC 带进位加法. 6 Q" u4 M; e$ y9 p& b$ i
INC 加 1. 9 m3 R3 S9 ^) Y9 w( Y/ E
AAA 加法的ASCII码调整. , C# o2 a! O# y& b
DAA 加法的十进制调整.
- R6 O7 h4 V8 rSUB 减法. ; t$ R, P1 F9 T* _: N/ g9 |
SBB 带借位减法.
5 t! Z& z& N9 JDEC 减 1.
7 x7 w& v/ W3 K( T( K/ k3 k" ONEC 求反(以 0 减之). + U9 g* e! Q/ @1 R- `
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
/ V- \# h5 p  ~' Z7 MAAS 减法的ASCII码调整.
& G' i4 L5 r$ H$ E; e; MDAS 减法的十进制调整. " @- q- |- a' `3 R: P
MUL 无符号乘法.
2 F, N+ _7 N6 xIMUL 整数乘法.
/ G, u) D- B1 q8 b6 t: s3 H5 h9 L以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), 6 g+ H# d3 c4 k) _' K7 i  R
AAM 乘法的ASCII码调整.
. P8 O  {) @" U. o( j$ WDIV 无符号除法. / D' |- h8 R  q3 w3 C9 O
IDIV 整数除法. & V0 J6 m8 W( l. u# w
以上两条,结果回送:
- A& P7 [$ _* e; H# L' `4 b2 u. C. d" A商回送AL,余数回送AH, (字节运算);
* L, u3 O1 |( r$ N5 H% g/ u1 C; _或 商回送AX,余数回送DX, (字运算). # v1 b, R4 V; Z& S) ]( h# W
AAD 除法的ASCII码调整. , O5 Z+ l* U9 q, b& ~
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
* b, p* |: I9 _9 oCWD 字转换为双字. (把AX中的字的符号扩展到DX中去) 6 P5 C: f& v1 c' H* a! B; J4 X
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) 1 M! {9 z; ^9 _% |) d; M
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) ! t# Z8 t1 v5 ^  j3 \9 ~

8 Y7 s1 p& |$ @4 I三、逻辑运算指令
- g" O0 Q) R4 p6 q( [" X  d───────────────────────────────────────
, O$ C5 d6 h. T1 Y  AND 与运算. 9 @- c( L# W/ X, ]) W0 g3 [
OR 或运算. 3 c& Z2 ?/ L5 `3 E; w
XOR 异或运算.
. Y8 c3 Z! @8 S$ g& b/ ~) i5 h. P% M9 hNOT 取反. / i7 j2 t0 O( h" U
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). 3 e" g9 d, ]! D3 x  D/ ^0 n
SHL 逻辑左移.
- N3 ^' ~: O$ Y% [% \* [SAL 算术左移.(=SHL)
- w* m8 @) R: W- A; \* Y: PSHR 逻辑右移.
' j* I' O$ i1 Z& ySAR 算术右移.(=SHR) ! v$ d2 N- u# r" B
ROL 循环左移. 3 e8 Z; s. c0 r2 v1 a; i& }
ROR 循环右移. # g% |/ m" C8 H7 u
RCL 通过进位的循环左移. , `; u2 u3 Q) k, B
RCR 通过进位的循环右移.
" V4 q6 H) a1 A% J! Q以上八种移位指令,其移位次数可达255次.   O1 |" b! V' y% P, Q
移位一次时, 可直接用操作码. 如 SHL AX,1. ) A1 ]+ ^' U9 v/ o$ S% j% p0 U
移位>1次时, 则由寄存器CL给出移位次数. $ F2 v; Y4 U1 I1 h% J( y( U
如 MOV CL,04
2 w8 s& n' {" qSHL AX,CL " ^7 t: d% Z% C/ E
0 O0 p! a! y4 V$ h7 y
四、串指令
8 F+ O9 c/ j7 x───────────────────────────────────────
5 u$ ]6 y( a, L: B DS:SI 源串段寄存器 :源串变址.
+ t1 U- \" d2 l2 rESI 目标串段寄存器:目标串变址.
" T1 a# b6 _- E3 E3 I+ _' [CX 重复次数计数器.
* T. q- R- k$ iAL/AX 扫描值. 3 H& q$ m' D$ c1 K1 z; U' N
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量. 6 Z$ s- d1 o4 a& p$ G1 E4 @
Z标志 用来控制扫描或比较操作的结束.
3 I3 D( N' R. T+ A! u0 }  O" LMOVS 串传送. . A! ?9 {6 O) c
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
  O; Y0 m+ S/ {9 m. ICMPS 串比较. ' \; l7 ]$ _, b" x) o
( CMPSB 比较字符. CMPSW 比较字. ) ( b1 j% X* e" z5 T& L  I; S
SCAS 串扫描.
) t  J- ^' ~6 W. m! B5 W/ Y把AL或AX的内容与目标串作比较,比较结果反映在标志位. " _7 y- c$ p$ g$ X* `, T
LODS 装入串. 0 ]: t! b4 n# `, I
把源串中的元素(字或字节)逐一装入AL或AX中.
8 v% B: F' y$ N( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
; O: q1 H$ {# e2 A/ g; \STOS 保存串.
  G" s; N8 z: W* c是LODS的逆过程.
$ ]- ?- k- {6 ~, n$ R: y, E5 GREP 当CX/ECX<>0时重复. 2 X$ [# t  Q# \9 c+ L
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
( u* n& n) m" M1 Y8 b- y# WREPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
) _' Z" G( r+ j6 t0 x, lREPC ; f- A7 |9 t4 k1 c! d
=========================
. Q1 E7 L/ [4 `+ {7 f$ \
后期资源网,打造没有广告、免除隐藏回复的全开放式影视技术交流平台。 你的所求就是我们服务的宗旨!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 10:23 , Processed in 0.125731 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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