那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

內存存儲方式

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

圖片

DS和[address]

  1. CPU讀寫一個內存單元時,必須要先給出這個內存單元的地址.
  2. 內存地址由段地址偏移地址組成.
  3. 數據段寄存器DS( Data Segment ), 用來存放要訪問數據的段地址.
mov BX, 1000H  #向BX寄存器中寫入1000H
mov DS, BX     #將BX寄存器中的值移入DS寄存器
mov AL,[0]     #將地址單元1000h:0中的值移入AX寄存器中的低位.
#"[]"說明操作對象是一個內存單元
  1. "[...]"表示一個內存單元, [0] 表示內存單元的偏移地址為0. 在執行指令時8086CPU自動讀取DS寄存器中的數據作為內存單元的 段地址 .
  2. 因為8086CPU的硬件設計無法使用mov指令直接對DS寄存器寫入數據.
  3. 段寄存器:
  • 代碼段寄存器CS(Code Segment).
  • 數據段寄存器DS(Data Segment).
  • 堆棧段寄存器SS(Stack Segment).
  • 附加段寄存器ES(Extra Segment).
    例題:

圖片

mov、add、sub指令

  1. mov
    • mov 段寄存器, 寄存器.
    • mov 寄存器, 段寄存器.
    • mov 內存單元, 寄存器.
    • mov 內存單元, 段寄存器.
    • mov 段寄存器, 內存單元.
  2. add和sub
    • 不能對段寄存進行操作.

CPU提供的棧機制

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

push、pop指令

1. push/pop 寄存器
2. push/pop 段寄存器
3. push/pop 內存單元
  1. 將10000H~1000FH這段空間作為棧, 初始棧是空的, 將AX, BX, DS中的數據入棧.
分析:
1. 需要設置??臻g.則需要設置SS:SP.
2. push AX BX DS.
代碼:
mov ax, 1000   ;將段地址寫入寄存器ax.
mov ss, ax     ;將ax寄存器中的值寫入ss段寄存器.
mov sp, 0010   ;將偏移地址寫入sp寄存器.


;將AX, BX, DS中的數據入棧
push ax
push bx
push ds

棧段

  • 棧段就是將一組地址連續, 起始地址為16的倍數的內存單元當作??臻g來使用.
  • 棧段的最大容量為64KB. 因為在執行push, pop指令時只修改SP, 而SP的變化換位是0-FFFFH, 所以為64KB.
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121193
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164348
收藏 人收藏

    評論

    相關推薦

    【轉】匯編語言入門教程

    使用的那一種。寄存器學習匯編語言,首先必須了解兩個知識點:寄存器內存模型。先來看寄存器。CPU 本身只負責運算,不負責儲存數據。數據一般
    發表于 01-16 11:06

    ARM匯編語言與指令格式資料分享

    1、ARM匯編語言與指令格式介紹匯編語言介紹概念指的是用助記符代替操作碼,用地址符號或標簽(:#&)代替地址碼的編程語言。優缺點優點:可以直接訪問硬件目標,代碼簡短,執行速度快
    發表于 04-22 16:10

    匯編語言教程-段寄存器的說明語句

    匯編語言教程-段寄存器的說明語句   在匯編語言源程序中可以定義多個段,每個段都要與一個段寄存器建立一種對應關系。建立這
    發表于 03-27 17:17 ?1426次閱讀

    匯編語言

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

    匯編語言學習課件_微處理基礎知識

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

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

    51單片機匯編語言教程:7課單片機的特殊功能寄存器
    發表于 01-19 15:26 ?0次下載

    寄存器Load/Store內存訪問指令

    5.4 多寄存器Load/Store內存訪問指令 多寄存器Load/Store內存訪問指令也叫批
    發表于 10-18 15:56 ?1次下載

    匯編語言學習

    寄存器 一個cpu有多個寄存器 就是cpu中可以存儲數據的器件,一個cpu中有多個寄存器匯編語言由一下3類組成 1、匯編
    發表于 11-23 18:06 ?14次下載
    <b class='flag-5'>匯編語言</b>學習

    [從零學習匯編語言] -寄存器詳解

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

    [從零學習匯編語言] - 寄存器內存訪問

    [從零學習匯編語言] - 寄存器內存訪問
    發表于 11-26 20:51 ?13次下載
    [從零學習<b class='flag-5'>匯編語言</b>] - <b class='flag-5'>寄存器</b>與<b class='flag-5'>內存</b><b class='flag-5'>訪問</b>

    深度剖析ARM內核寄存器及基本匯編語言1

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

    深度剖析ARM內核寄存器及基本匯編語言2

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

    深度剖析ARM內核寄存器及基本匯編語言3

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

    訪問CXL 2.0設備中的內存映射寄存器

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

    單片機匯編語言的結構/數據類型/匯編指令

    開發匯編語言是為了為機器級代碼指令提供助記符或符號,匯編語言程序由助記符組成,因此應將它們翻譯成機器代碼。負責這種轉換的程序稱為匯編程序。匯編語言通常被稱為低級
    的頭像 發表于 07-07 12:28 ?3139次閱讀
    新葡京国际娱乐城| 晋州市| 百家乐官网打法心得| 百家乐官网77scs官网| 百家乐制胜法| e世博官方网站| 百家乐官网出老千视频| 带有百家乐的棋牌游戏有哪些| 大发888登录| 百家乐官网出千技巧| 百家乐官网透明出千牌靴| 百家乐上海代理| bet365娱乐城官网| 赌博百家乐官网趋势把握| 百家乐最新庄闲投注法| 足彩大赢家| 单机百家乐官网小游戏| 庞博百家乐的玩法技巧和规则| 永利百家乐赌场娱乐网规则| 百家乐玩法| 三国百家乐官网的玩法技巧和规则| 百家乐庄闲出现几| 百家乐官网智能分析软| 百家乐系统足球博彩通| 美乐门娱乐| 网上的百家乐官网怎么才能| 二八杠视频| 网上百家乐官网作弊下载| 百家乐娱乐城博彩正网| 博e百| 棋牌百家乐官网有稳赚的方法吗 | 大发888-dafa888uk.com| 百家乐官网翻天快播粤语| 百家乐推广| 德化县| 澳门百家乐真人娱乐城| 泰安市| 百家乐云顶| 百家乐官网分路单析器| 百家乐庄闲比| 百家乐官网在线投注网|