內(nèi)存存儲方式
CPU中用16位寄存器來存儲一個字(1 word = 2 bytes = 16 bits). 其中高8位存放高字節(jié), 低8位存放低字節(jié). 如下圖, 用0 , 1兩個內(nèi)存單元存放數(shù)據(jù)20000(4E20H).
DS和[address]
- CPU讀寫一個內(nèi)存單元時(shí),必須要先給出這個內(nèi)存單元的地址.
- 內(nèi)存地址由段地址和偏移地址組成.
- 數(shù)據(jù)段寄存器DS( Data Segment ), 用來存放要訪問數(shù)據(jù)的段地址.
mov BX, 1000H #向BX寄存器中寫入1000H
mov DS, BX #將BX寄存器中的值移入DS寄存器
mov AL,[0] #將地址單元1000h:0中的值移入AX寄存器中的低位.
#"[]"說明操作對象是一個內(nèi)存單元
- "[...]"表示一個內(nèi)存單元, [0] 表示內(nèi)存單元的偏移地址為0. 在執(zhí)行指令時(shí)8086CPU自動讀取DS寄存器中的數(shù)據(jù)作為內(nèi)存單元的 段地址 .
- 因?yàn)?086CPU的硬件設(shè)計(jì)無法使用mov指令直接對DS寄存器寫入數(shù)據(jù).
- 段寄存器:
- 代碼段寄存器CS(Code Segment).
- 數(shù)據(jù)段寄存器DS(Data Segment).
- 堆棧段寄存器SS(Stack Segment).
- 附加段寄存器ES(Extra Segment).
例題:
mov、add、sub指令
- mov
- mov 段寄存器, 寄存器.
- mov 寄存器, 段寄存器.
- mov 內(nèi)存單元, 寄存器.
- mov 內(nèi)存單元, 段寄存器.
- mov 段寄存器, 內(nèi)存單元.
- add和sub
- 不能對段寄存進(jìn)行操作.
CPU提供的棧機(jī)制
- 棧(stack), 有兩個基本操作: LIFO(Last In First Out)
- 入棧: 將新元素放入棧頂.
- 出棧: 從棧頂取出一個元素.
- 8086CPU提供入棧(PUSH)和出棧(POP)指令. 例如:
- push ax : 表示將寄存器ax中的數(shù)據(jù)送入棧中.
- pop ax : 表示從棧頂取出數(shù)據(jù)送入ax.
- 注意: 在8060CPU中push/pop操作都是以word(16 bits)為單位. 圖例:
- CPU如何知道棧頂?shù)牡刂?
- 8086CPU中有兩個寄存器:
- 段寄存器SS.
- 寄存器SP.
*任意時(shí)刻,SS:SP 都指向棧頂元素.
- 8086CPU中有兩個寄存器:
push、pop指令
1. push/pop 寄存器
2. push/pop 段寄存器
3. push/pop 內(nèi)存單元
- 將10000H~1000FH這段空間作為棧, 初始棧是空的, 將AX, BX, DS中的數(shù)據(jù)入棧.
分析:
1. 需要設(shè)置棧空間.則需要設(shè)置SS:SP.
2. push AX BX DS.
代碼:
mov ax, 1000 ;將段地址寫入寄存器ax.
mov ss, ax ;將ax寄存器中的值寫入ss段寄存器.
mov sp, 0010 ;將偏移地址寫入sp寄存器.
;將AX, BX, DS中的數(shù)據(jù)入棧
push ax
push bx
push ds
棧段
- 棧段就是將一組地址連續(xù), 起始地址為16的倍數(shù)的內(nèi)存單元當(dāng)作棧空間來使用.
- 棧段的最大容量為64KB. 因?yàn)樵趫?zhí)行push, pop指令時(shí)只修改SP, 而SP的變化換位是0-FFFFH, 所以為64KB.
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
寄存器
+關(guān)注
關(guān)注
31文章
5317瀏覽量
120003 -
存儲器
+關(guān)注
關(guān)注
38文章
7452瀏覽量
163598
發(fā)布評論請先 登錄
相關(guān)推薦
【轉(zhuǎn)】匯編語言入門教程
使用的那一種。寄存器學(xué)習(xí)匯編語言,首先必須了解兩個知識點(diǎn):寄存器和內(nèi)存模型。先來看寄存器。CPU 本身只負(fù)責(zé)運(yùn)算,不負(fù)責(zé)儲存數(shù)據(jù)。數(shù)據(jù)一般
發(fā)表于 01-16 11:06
ARM匯編語言與指令格式資料分享
1、ARM匯編語言與指令格式介紹匯編語言介紹概念指的是用助記符代替操作碼,用地址符號或標(biāo)簽(:#&)代替地址碼的編程語言。優(yōu)缺點(diǎn)優(yōu)點(diǎn):可以直接訪問硬件目標(biāo),代碼簡短,執(zhí)行速度快
發(fā)表于 04-22 16:10
匯編語言教程-段寄存器的說明語句
匯編語言教程-段寄存器的說明語句
在匯編語言源程序中可以定義多個段,每個段都要與一個段寄存器建立一種對應(yīng)關(guān)系。建立這
發(fā)表于 03-27 17:17
?1389次閱讀
匯編語言學(xué)習(xí)課件_微處理器基礎(chǔ)知識
匯編語言學(xué)習(xí)課件 第二章 微處理器基礎(chǔ)知識
2.1 Intel公司80x86系列微處理器簡介
2.2 程序可見寄存器組
2.3 存儲器
發(fā)表于 12-31 10:39
?0次下載
多寄存器Load/Store內(nèi)存訪問指令
5.4 多寄存器Load/Store內(nèi)存訪問指令 多寄存器Load/Store內(nèi)存訪問指令也叫批
發(fā)表于 10-18 15:56
?1次下載
匯編語言學(xué)習(xí)
寄存器 一個cpu有多個寄存器 就是cpu中可以存儲數(shù)據(jù)的器件,一個cpu中有多個寄存器匯編語言由一下3類組成 1、匯編指
發(fā)表于 11-23 18:06
?14次下載
[從零學(xué)習(xí)匯編語言] -寄存器詳解
文章目錄前言一、 存儲器與通用寄存器1. 存儲器2. 通用寄存器前言上一章我們曾簡單的介紹過計(jì)算機(jī)中的一些硬件和軟件的相關(guān)概念,還不熟悉的小伙伴可以點(diǎn)擊下面的鏈接進(jìn)行預(yù)習(xí):[
發(fā)表于 11-26 20:51
?8次下載
訪問CXL 2.0設(shè)備中的內(nèi)存映射寄存器
計(jì)算快速鏈接 (CXL) 1.1 和 CXL 2.0 規(guī)范在內(nèi)存映射寄存器的放置和訪問方式上有所不同。CXL 1.1 規(guī)范將內(nèi)存映射寄存器放
單片機(jī)匯編語言的結(jié)構(gòu)/數(shù)據(jù)類型/匯編指令
開發(fā)匯編語言是為了為機(jī)器級代碼指令提供助記符或符號,匯編語言程序由助記符組成,因此應(yīng)將它們翻譯成機(jī)器代碼。負(fù)責(zé)這種轉(zhuǎn)換的程序稱為匯編程序。匯編語言通常被稱為低級
評論