寄存器的作用
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中的數據為內存單元的段地址