寄存器的作用
EAX:accumulator,加法乘法指令的缺省寄存器
EBX:base address,内存寻址存放基地址
ECX:counter,重复(REP)前缀指令和LOOP指令的内定计数器
EDX:data,总是被用来放整数除法产生的余数
ESI:source index,在很多字符串操作指令中, DS:ESI指向源串
EDI:destination index,ES:EDI指向目标串
EBP:base pointer,函数调用时??
ESP:stack pointer,栈顶指针,堆栈从高地址向低地址增长
EFLAGS:标志寄存器
EIP:指令指针寄存器
段寄存器:
CS(code stack)
DS(data):通常用来存放要访问的数据的段地址
SS(stack) ES FS GS:
寻址方式
立即数寻址:数据在指令代码中,用常量表示。mov al,12h
寄存器寻址:数据在寄存器中,用寄存器名表示。mov al,12
存储器寻址:数据在主存中,用存储器地址表示。基址寄存器+变址寄存器*比例+位移量
IO寻址:数据在外设中,用IO地址表示
子程序与堆栈
调用函数
call:将下条指令压入堆栈,转移到目标地址
ret:将当前堆栈顶部弹出内容作为返回地址看,转移到返回地址
参数传递:通用寄存器,共享变量,堆栈
将数据放入地址1000H的内存
mov bx,1000H
mov ds,bx
mov [0],al ;[0]表示一个内存单元,0表示内存单元的偏移地址;指令执行时,自动取ds中的数据为内存单元的段地址