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.彙編指令是指有對應的機器碼的指令,可以被編譯為機器指令,最終...