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

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

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

[复制链接]
发表于 2013-1-4 11:30:53 | 显示全部楼层 |阅读模式
一、数据传输指令
9 F& F8 R0 @! _- I7 U/ h! M2 p─────────────────────────────────────── 7 O% B$ ?6 T( y0 q- F: Q- A5 B
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. ) s" r' }0 h+ n7 b
1. 通用数据传送指令.
! J% U* V4 j' b4 H! tMOV 传送字或字节.
4 M: K9 N7 `5 D. i( S4 \% VMOVSX 先符号扩展,再传送. ; j3 j- F2 y  b
MOVZX 先零扩展,再传送.
7 e% b% a: G/ `# q/ }8 n" vPUSH 把字压入堆栈. 5 R+ ^7 T0 Q7 W% n4 \
POP 把字弹出堆栈.
0 u" c, Y+ n5 A7 V% [PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. 3 ~4 r1 j0 n: J5 q
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
- o0 `5 g4 z7 YPUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. , z* q! g7 \* Y; g$ G
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
6 C1 `5 F; j' Z9 X7 IBSWAP 交换32位寄存器里字节的顺序
8 e9 O' e& ?- q- v$ x, E+ P  D! \: JXCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
) `$ X9 V! [4 x* p( ICMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) 3 I: @. }  q8 T7 i, W5 y# n' j9 c
XADD 先交换再累加.( 结果在第一个操作数里 ) # p9 x1 ?6 H  B
XLAT 字节查表转换.
7 z( Y  S7 s$ f: i8 T# p── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
! l& a" o9 g1 j+ @* J  f1 y0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL ) & |% ~! Q  x7 r% H; L5 [- H, V
2. 输入输出端口传送指令. / W. s, _/ g! k/ ]
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
" T3 w; n' U4 M. K8 tOUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
/ F( o2 ^3 Q% t8 ~4 k输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
: [6 \5 h! @1 e; `其范围是 0-65535.
1 P9 \  h, m7 v3 c6 \- D% _3. 目的地址传送指令.
8 Q% Q8 B6 U  R  Q7 g  Q, o. TLEA 装入有效地址. & C$ H( m' f* G, y4 q7 |
例: LEA DX,string ;把偏移地址存到DX.
5 M1 c" K5 [/ T$ Y+ sLDS 传送目标指针,把指针内容装入DS.
. @* I+ J' U/ J( W例: LDS SI,string ;把段地址:偏移地址存到DS:SI. ! ~" h8 L) X/ b" j" W. [2 b
LES 传送目标指针,把指针内容装入ES.
5 j$ n1 s$ Y5 b  a" k; N例: LES DI,string ;把段地址:偏移地址存到ESI. 7 m8 Y) n* O" t% x+ u- w
LFS 传送目标指针,把指针内容装入FS.
( e  I; ~. {2 n; J4 h例: LFS DI,string ;把段地址:偏移地址存到FSI. ) X3 G; h4 b7 W9 w1 f( O
LGS 传送目标指针,把指针内容装入GS. . z% j' b9 W4 L1 M0 t7 z
例: LGS DI,string ;把段地址:偏移地址存到GSI. ; @7 ^8 r. W9 x4 w. {6 ]3 \% [
LSS 传送目标指针,把指针内容装入SS. 1 E( ]5 z9 A) U- H5 P6 m3 y) _) Q' A
例: LSS DI,string ;把段地址:偏移地址存到SSI. # T8 }  ]( G/ P- e. r7 }
4. 标志传送指令.
" S, H1 _  v+ n) f0 m( kLAHF 标志寄存器传送,把标志装入AH. 4 m7 y( o& @4 f9 _. }7 Z0 ]
SAHF 标志寄存器传送,把AH内容装入标志寄存器. 4 Q' G# o8 ~2 \; t8 [/ }& {1 y
PUSHF 标志入栈. + B$ C) g' {" b1 w
POPF 标志出栈. , f( S( T7 c! E: M. e
PUSHD 32位标志入栈.
+ X% R* _; X3 r6 GPOPD 32位标志出栈.
; ~: Z! D) E6 y, U1 j
2 n: g$ N! t* F" [4 }- S2 C二、算术运算指令
% T0 p) k* A# B8 E8 \, L─────────────────────────────────────── # {7 U2 m' V  v0 W6 Z
  ADD 加法. + O( T* r6 g" d, `
ADC 带进位加法. 6 C0 Z7 ~& b: F- g  A% C0 e+ Q5 b% \0 f
INC 加 1. 3 M8 a8 E+ w1 O7 ~4 S, V/ M
AAA 加法的ASCII码调整. % {1 L% t! p: Z% W, `2 R) w
DAA 加法的十进制调整.
% u& k2 I' Q. A5 y5 ISUB 减法. 2 s5 T8 C$ `! e
SBB 带借位减法.
! V* k) ~9 }# U" k- B5 t* dDEC 减 1. 7 d! y. \0 R- ?' d. u5 ?0 _
NEC 求反(以 0 减之). ( D$ D' l1 N, ^% G0 }- y' d
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
/ ~- z7 C0 o7 N, V  d. x8 F* @0 GAAS 减法的ASCII码调整. ' G# N& w; ?! y9 O3 L$ t4 ]* l
DAS 减法的十进制调整. ! A9 k8 U. s/ ]' P
MUL 无符号乘法.
* y/ f0 B) F# w) m: ]IMUL 整数乘法. 8 K* I5 J6 P) Z2 M9 q
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), + d0 ^2 h9 G& n- m8 c/ j5 W
AAM 乘法的ASCII码调整. . a! f+ h8 ~6 W7 K5 ?
DIV 无符号除法.
; e% H. D+ k' @4 t# mIDIV 整数除法.
! m. _5 Z) |) R. O- E以上两条,结果回送:
2 s3 A0 R2 W7 {( x1 f6 Q, l商回送AL,余数回送AH, (字节运算);
; j3 Y* y! c, m2 `! K3 y# @6 a- ]或 商回送AX,余数回送DX, (字运算). 0 R( p4 F6 p8 B# J$ x& u
AAD 除法的ASCII码调整. % `. W+ D. x7 w! H- a# y& K; z& k
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) 2 A1 l6 Y" S0 P3 m) ]
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) # L% L! J7 _0 S1 X$ o" _
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
% V# }& l8 k! i" n1 WCDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
, R; \+ m* g1 R1 T, U1 y; n+ K' w* X1 C8 T1 |6 `
三、逻辑运算指令
: k5 {! x8 F4 T) L- B───────────────────────────────────────
* F. I1 c+ {5 T( M, B0 Z# F# B  AND 与运算.
( w9 I5 z, e1 l+ ?# i9 Z; zOR 或运算.
& q( k% k# u& fXOR 异或运算.
5 z5 d3 M+ f& Q! u0 |7 B1 N1 _NOT 取反.
. j) j; `9 ~2 \. U+ {" O/ ITEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). ) M4 z2 ]( r0 t/ W9 {
SHL 逻辑左移. 9 n0 G* ~0 A) ?: j# v( z1 K
SAL 算术左移.(=SHL) . B0 W) ?7 D$ V/ p  D
SHR 逻辑右移. ; d) N8 A9 l1 o: r8 G
SAR 算术右移.(=SHR)
! J8 T7 m$ l  d$ J) dROL 循环左移.
  g8 ]1 k* [6 L& ~* s1 @, N2 TROR 循环右移.
' i1 ]9 y0 j* K" LRCL 通过进位的循环左移. 8 T6 i4 \/ p' d4 E( o  g
RCR 通过进位的循环右移.
2 {+ o' E  C  T1 I以上八种移位指令,其移位次数可达255次.
. l9 ^' C5 F# l3 s, Y# P移位一次时, 可直接用操作码. 如 SHL AX,1.
' a) R5 W% _7 ?  Z0 P! G9 B: R移位>1次时, 则由寄存器CL给出移位次数. : w/ }! m, o  f& M" j/ A
如 MOV CL,04
" _: \; _  M6 @; sSHL AX,CL 9 u! z  }. g- O6 L7 H1 k
  t) `. O0 {9 O7 a. c6 s
四、串指令
+ v! x' L% e3 s. k' i4 }───────────────────────────────────────
! E2 X( a) H; v. e# {* D7 F! O DS:SI 源串段寄存器 :源串变址.
  s% `3 t5 D/ U; k, x4 B0 mESI 目标串段寄存器:目标串变址.
& D" |# K9 {, m% m( f; nCX 重复次数计数器. 3 T( F' Q8 N: r8 a$ R* i
AL/AX 扫描值. ' j1 t. B, B) V. S; g
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
/ _% V5 J2 I5 k; kZ标志 用来控制扫描或比较操作的结束. 0 X1 X0 r+ i6 Z$ M6 }
MOVS 串传送.
/ w1 O- ]0 n; w' H( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
: L0 g. g  V! ]$ ^& B# OCMPS 串比较. ' l2 O' r& [; K; k% M
( CMPSB 比较字符. CMPSW 比较字. ) ' B/ [; A# l6 s1 \
SCAS 串扫描.
7 ~1 i- P- P, o( _  {把AL或AX的内容与目标串作比较,比较结果反映在标志位.   u9 w+ {2 X+ `! T. j
LODS 装入串.
' Q$ O0 D. B. E. f( i' a把源串中的元素(字或字节)逐一装入AL或AX中.
  ?1 N$ h" ]' b$ b/ ~( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
* w- w* _( o) ]* C# l0 `STOS 保存串. 6 S& v  P9 p: e  p
是LODS的逆过程.
. B2 X' B4 L8 A) LREP 当CX/ECX<>0时重复.
( g& `" _: T5 uREPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复. * P3 J6 {" H1 u- C
REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
  f) L7 U6 W9 w+ f$ y' v8 k, JREPC + w& P; M5 Z, ?9 U3 n
=========================
& x8 t# O! \& d% G  W
后期资源网,打造没有广告、免除隐藏回复的全开放式影视技术交流平台。 你的所求就是我们服务的宗旨!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-17 18:30 , Processed in 0.116386 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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