精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

匯編語言之內(nèi)存訪問(寄存器)

冬至子 ? 來源:一口吃成大胖紙 ? 作者:一口吃成大胖紙 ? 2023-09-20 14:47 ? 次閱讀

內(nèi)存存儲方式

CPU中用16位寄存器來存儲一個字(1 word = 2 bytes = 16 bits). 其中高8位存放高字節(jié), 低8位存放低字節(jié). 如下圖, 用0 , 1兩個內(nèi)存單元存放數(shù)據(jù)20000(4E20H).

圖片

DS和[address]

  1. CPU讀寫一個內(nèi)存單元時(shí),必須要先給出這個內(nèi)存單元的地址.
  2. 內(nèi)存地址由段地址偏移地址組成.
  3. 數(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)存單元
  1. "[...]"表示一個內(nèi)存單元, [0] 表示內(nèi)存單元的偏移地址為0. 在執(zhí)行指令時(shí)8086CPU自動讀取DS寄存器中的數(shù)據(jù)作為內(nèi)存單元的 段地址 .
  2. 因?yàn)?086CPU的硬件設(shè)計(jì)無法使用mov指令直接對DS寄存器寫入數(shù)據(jù).
  3. 段寄存器:
  • 代碼段寄存器CS(Code Segment).
  • 數(shù)據(jù)段寄存器DS(Data Segment).
  • 堆棧段寄存器SS(Stack Segment).
  • 附加段寄存器ES(Extra Segment).
    例題:

圖片

mov、add、sub指令

  1. mov
    • mov 段寄存器, 寄存器.
    • mov 寄存器, 段寄存器.
    • mov 內(nèi)存單元, 寄存器.
    • mov 內(nèi)存單元, 段寄存器.
    • mov 段寄存器, 內(nèi)存單元.
  2. add和sub
    • 不能對段寄存進(jìn)行操作.

CPU提供的棧機(jī)制

  1. 棧(stack), 有兩個基本操作: LIFO(Last In First Out)
    1. 入棧: 將新元素放入棧頂.
    2. 出棧: 從棧頂取出一個元素.
  2. 8086CPU提供入棧(PUSH)和出棧(POP)指令. 例如:
    1. push ax : 表示將寄存器ax中的數(shù)據(jù)送入棧中.
    2. pop ax : 表示從棧頂取出數(shù)據(jù)送入ax.
  3. 注意: 在8060CPU中push/pop操作都是以word(16 bits)為單位. 圖例:
    圖片
  4. CPU如何知道棧頂?shù)牡刂?
    1. 8086CPU中有兩個寄存器:
      • 段寄存器SS.
      • 寄存器SP.
        *任意時(shí)刻,SS:SP 都指向棧頂元素.

push、pop指令

1. push/pop 寄存器
2. push/pop 段寄存器
3. push/pop 內(nèi)存單元
  1. 將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
收藏 人收藏

    評論

    相關(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次閱讀

    匯編語言

    匯編語言舉例,比如讀寄存器內(nèi)容的源代碼、匯編語言制作的光帶菜單及源程序、獲得操作系統(tǒng)版本的匯編源代碼等
    發(fā)表于 12-31 10:40 ?33次下載

    匯編語言學(xué)習(xí)課件_微處理基礎(chǔ)知識

    匯編語言學(xué)習(xí)課件 第二章 微處理基礎(chǔ)知識 2.1 Intel公司80x86系列微處理簡介 2.2 程序可見寄存器組 2.3 存儲
    發(fā)表于 12-31 10:39 ?0次下載

    51單片機(jī)匯編語言教程_單片機(jī)的特殊功能寄存器

    51單片機(jī)匯編語言教程:7課單片機(jī)的特殊功能寄存器
    發(fā)表于 01-19 15:26 ?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次下載
    <b class='flag-5'>匯編語言</b>學(xué)習(xí)

    [從零學(xué)習(xí)匯編語言] -寄存器詳解

    文章目錄前言一、 存儲與通用寄存器1. 存儲2. 通用寄存器前言上一章我們曾簡單的介紹過計(jì)算機(jī)中的一些硬件和軟件的相關(guān)概念,還不熟悉的小伙伴可以點(diǎn)擊下面的鏈接進(jìn)行預(yù)習(xí):[
    發(fā)表于 11-26 20:51 ?8次下載
    [從零學(xué)習(xí)<b class='flag-5'>匯編語言</b>] -<b class='flag-5'>寄存器</b>詳解

    [從零學(xué)習(xí)匯編語言] - 寄存器內(nèi)存訪問

    [從零學(xué)習(xí)匯編語言] - 寄存器內(nèi)存訪問
    發(fā)表于 11-26 20:51 ?13次下載
    [從零學(xué)習(xí)<b class='flag-5'>匯編語言</b>] - <b class='flag-5'>寄存器</b>與<b class='flag-5'>內(nèi)存</b><b class='flag-5'>訪問</b>

    深度剖析ARM內(nèi)核寄存器及基本匯編語言1

    M3/M4內(nèi)核寄存器 * 1.2 A7內(nèi)核寄存器 * 1.3 ARM中的PC指針的值 * 二、ARM匯編語言
    的頭像 發(fā)表于 04-24 09:59 ?942次閱讀
    深度剖析ARM內(nèi)核<b class='flag-5'>寄存器</b>及基本<b class='flag-5'>匯編語言</b>1

    深度剖析ARM內(nèi)核寄存器及基本匯編語言2

    M3/M4內(nèi)核寄存器 * 1.2 A7內(nèi)核寄存器 * 1.3 ARM中的PC指針的值 * 二、ARM匯編語言
    的頭像 發(fā)表于 04-24 10:00 ?1050次閱讀
    深度剖析ARM內(nèi)核<b class='flag-5'>寄存器</b>及基本<b class='flag-5'>匯編語言</b>2

    深度剖析ARM內(nèi)核寄存器及基本匯編語言3

    M3/M4內(nèi)核寄存器 * 1.2 A7內(nèi)核寄存器 * 1.3 ARM中的PC指針的值 * 二、ARM匯編語言
    的頭像 發(fā)表于 04-24 10:01 ?1186次閱讀
    深度剖析ARM內(nèi)核<b class='flag-5'>寄存器</b>及基本<b class='flag-5'>匯編語言</b>3

    訪問CXL 2.0設(shè)備中的內(nèi)存映射寄存器

    計(jì)算快速鏈接 (CXL) 1.1 和 CXL 2.0 規(guī)范在內(nèi)存映射寄存器的放置和訪問方式上有所不同。CXL 1.1 規(guī)范將內(nèi)存映射寄存器
    的頭像 發(fā)表于 05-25 16:56 ?1894次閱讀
    <b class='flag-5'>訪問</b>CXL 2.0設(shè)備中的<b class='flag-5'>內(nèi)存</b>映射<b class='flag-5'>寄存器</b>

    單片機(jī)匯編語言的結(jié)構(gòu)/數(shù)據(jù)類型/匯編指令

    開發(fā)匯編語言是為了為機(jī)器級代碼指令提供助記符或符號,匯編語言程序由助記符組成,因此應(yīng)將它們翻譯成機(jī)器代碼。負(fù)責(zé)這種轉(zhuǎn)換的程序稱為匯編程序。匯編語言通常被稱為低級
    的頭像 發(fā)表于 07-07 12:28 ?2903次閱讀