組合語言 王爽(01)

2022-06-23 23:27:10 字數 2011 閱讀 3717

8086 cpu 有20位位址匯流排,cpu 一次只能傳輸16位

位址加法器採用 ------實體地址 = 段位址 * 16 + 偏移位址

讀取 10000h單元中的內容:

mov bx,1000h  //

mov ds,bx  //    錯誤示範 mov ds,1000h,8086cpu不支援直接將資料輸入到段 暫存器中

mov al,[0]  // [.....]中的 0  標示記憶體單元的偏移位址

// 8086 cpu 自動取 ds 中的資料為記憶體單元的段位址

寫入資料到10000h:

mov bx,1000h

mov ds,bx

mov [0],al

mov 、add、sub指令

mov 指令有以下幾種形式

mov  暫存器,資料

mov 暫存器,暫存器

mov 暫存器,記憶體單元

mov 記憶體單元,暫存器/段暫存器

mov 段暫存器,暫存器/記憶體單元

mov    暫存器,段暫存器

add sub,缺少對段暫存器的操作

棧是一種具有特殊的訪問方式的儲存空間,---------最後進入的資料最先出去。lifo (last in frist out)

push(入棧)以字為單位進行

pop(出棧)

ss 段暫存器------------棧頂的段位址

和sp暫存器------------偏移位址***************===ss:sp指向棧頂元素

mov sp,0010h  //棧底

mov ax,001ah

mov bx,001bh

push ax  // 入棧指令 sp-2

push bx

sub ax,ax

sub bx,bx

pop bx

pop ax  // 出棧指令 sp+2

編寫第乙個程式

assume cs:codesg

codesg segment

start :mov ax,0123h

mov bx,0456h

add ax,bx

add ax,ax

mov ax,4c00h

int 21h

codesg ends

end

dosbox 使用方法:見網頁--------->>>>>

程式的除錯方法:debug   +  r  

cx:表示程式的長度

.dos系統中.exe檔案中的程式載入過程:

u 命令顯示機器碼及其對應的位址

組合語言 王爽

cpu有三條匯流排 位址 資料 控制線 位址匯流排確定儲存單元 控制匯流排傳送指令 資料匯流排 傳輸資料 cpu n個位址線 位址匯流排寬度為n 可以尋找2 n個記憶體單元 儲存單元 0開始編號,乙個儲存單元可以儲存乙個byte 8086cpu有16根位址線 1bit就是一根位址線 注意 儲存器以b...

組合語言 王爽 筆記

關於pop的知識 1.出棧後,ss sp指向新的棧頂,pop操作前的棧頂元素中的資料仍然存在,但是,它已不再棧中 2.ss和sp只記錄了棧頂的位址,依靠ss和sp可以保證在入棧和出棧時找到棧頂 3.當棧滿的時候再次使用push指令入棧,棧空的時候再次使用pop指令出棧,都將發生棧頂越界問題,它是非常...

組合語言 王爽 筆記

1.乙個組合語言程式從寫出到最終執行的簡要過程 編寫,編譯連線,執行 2.可執行檔案中包含兩部分內容 一是程式 從源程式中的彙編指令翻譯過來的機器碼 和資料 源程式中定義的資料 二是相關的描述資訊 eg 程式的大小,要佔的記憶體空間等 3.彙編指令是指有對應的機器碼的指令,可以被編譯為機器指令,最終...