Assembly Language

寄存器:
通用寄存器
数据寄存器:
  AX    Accumulator    累加器
  BX    Base        基址寄存器
  CX    Count        计数器 
  DX    Data        数据寄存器
指针寄存器:
  BP    Base Pointer      基址指针寄存器
  SP    Stack Pointer     栈指针寄存器
变址寄存器:
  SI    Source Index    源变址寄存器
  DI      Destination Index   目的变址寄存器
控制寄存器
  IP    Instruction Pointer    指令指针寄存器
  FLAG                 标志寄存器
段寄存器:
  CS    Code Segment                 代码段寄存器
  DS    Data Segment                 数据段寄存器
  SS    Stack Segment                栈段寄存器
  ES    Extra Segment                段寄存器
寄存器的组合:
  CS:IP    当前指令执行位置
  SS:SP    当前栈顶位置 
跳转指令:  
段内跳转:
  jmp  short Label                    8 bit 短跳转
  jmp  near ptr Label              16 bit 近跳转
  jmp  寄存器                          16 bit 跳转
  jmp  word [存储器地址]          16 bit 跳转
端间跳转:
  jmp  far ptr  Label                 段地址, 偏移值直接由 Label 指出
  jmp  dword ptr [存储器地址]    段地址, 偏移值有存储器中的值决定
开辟存储空间:
 开辟空间指令是伪指令, 并不在执行期间被执行, 而是在汇编期间由汇编程序处理的操作.
; Lable  db/dw/dd/dq/dt [数量]  内容和形式 ; 长度
arr8 db           00h, 01h ; 2 bytes
arr16   dw            0000h, 0001h ; 4 bytes
arr32    dd        10 dup(?) ; 40 bytes
arr64    dq  10 dup(0h, 2 dup(1h, 2h), 0h) ; 480 bytes
arr80    dt  10 00h ; 100 bytes
; 对同一地址不同解释
arr_byte  label  byte ; 以字节方式解释
arr_word  dw  50  dup(?) ; 以字的方式开辟 100 bytes 空间
  
赋值
赋值指令是伪指令.
CONSTANT equ 10h
ARR_LEN equ ARR_END - ARR_BEGIN
; 'ARR_END' 和 'ARR_BEGIN' 必须出现在 'ARR_LEN' 之前

VAR = 43h
; 'equ' 与 '=' 的区别在于前者不可重复定义一个标签, 而后者可以
VAR = 12h 
栈操作
push AX pop BX
; SP = SP - 2 先准备栈空间 ; BX = word(SP) 先将值保存至目标位置
;
word(SP) = AX 再将值写入栈 ; SP = SP + 2 再将栈顶后移(出栈)
函数调用与返回
call DST ret [DST]
; [CS 入栈] ; IP = (SP)
;
IP 入栈 ; IP 出栈
;
[ CS = CS + DST段地址 ] ; [ CS = (SP) ]
;
IP = IP + DST偏移量 ; [ CS 出栈 ]
; [ SP = SP + DST ]
中断与中断返回
   中断向量表位置 : 00000h ~ 003FFh, 共占 1024 字节. 可存储 256 个中断向量. 高地址存放 CS, 低地址存放 IP.
int TYPE iret
; PSW 入栈 ; IP = word(SP)
;
CS 入栈 ; IP 出栈
;
IP 入栈 ; CS = word(SP)
;
IP = (TYPE * 4) ; CS 出栈
;
CS = (TYPE * 4 + 2) ; PSW = word(SP)
; PSW 出栈

$ 为当前地址计数器的值(当前段的偏移值).
posted @ 2011-05-24 15:51  walfud  阅读(333)  评论(0编辑  收藏  举报