8086 匯編筆記(一):寄存器

前言

8086 CPU 有 14 個寄存器,每個寄存器有一個名稱。這些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

一、通用寄存器

8086 CPU 的所有寄存器都是 16 位的,可以存放兩個字節。AX、BX、CX、DX 這 4個寄存器通常用來存放一般性的數據,被稱為通用寄存器。

8086 CPU 的上一代 CPU 中的寄存器都是 8 位的。

為了保證兼容,使原來基于上代 CPU 編寫的程序稍加修改就可以運行在 8086 之上,8086 CPU 的 AX、BX、CX、DX 這 4個寄存器都可分為兩個可獨立使用的8位寄存器來用:

????????1. AX 可分為 AH 和 AL;

????????2. BX 可分為 BH 和 BL;.

????????3. CX 可分為 CH 和 CL;

????????4. DX 可分為 DH 和 DL。?

AX 的低 8 位(0 位~7 位) 構成了 AL 寄存器,高 8位(8 位~15 位) 構成了 AH 寄存器。AH 和 AL 寄存器是可以獨立使用的 8 位寄存器。?

二、字在寄存器中的存儲?

出于對兼容性的考慮,8086 CPU 可以一次性處理以下兩種尺寸的數據。

字節:記為 byte,一個字節由8個bit組成,可以存在8位寄存器中。

字:記為 word,一個字由兩個字節組成,這兩個字節分別稱為這個字的高位字節和低位字節。

三、匯編指令

書中案例分析,請計算最后 ax 寄存器的值?

程序段中的最后一條指令 add ax,bx,在執行前 ax 和 bx 中的數據都為 8226H,相加后所得的值為:1044CH,但是 ax為16 位寄存器,只能存放4位十六進制的數據,所以最高位的1不能在 ax 中保存,ax 中的數據為:044CH。?

請計算 al 寄存器的值

程序段中的最后一條指令 add al,93H,在執行前,al 中的數據為 C5H,相加后所得的值為:158H,但是 al 為8位寄存器,只能存放兩位十六進制的數據,所以最高位的1丟失,ax 中的數據為:0058H

這里如果將 al 換成 ax 則結果為 0158 H(注意區分八位和十六位寄存器)

在進行數據傳送或運算時,要注意指令的兩個操作對象的位數應當是一致的,例如:?

mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,20000

答案解析:

四、物理地址

每一個內存單元都有唯一的地址,我們將這個唯一的地址稱為物理地址。?

五、8086 CPU 給出物理地址的方法

8086CPU 采用一種在內部用兩個 16 位地址合成的方法來形成一個 20 位的物理地址

1. CPU 中的相關部件提供兩個 16 位的地址,一個稱為段地址,另一個稱為偏移地址;

2. 段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件:

3.?地址加法器將兩個16 位地址合成為一個20位的物理地址;

4. 地址加法器通過內部總線將20位物理地址送入輸入輸出控制電路;

5. 輸入輸出控制電路將20位物理地址送上地址總線;

6. 20位物理地址被地址總線傳送到存儲器。?

地址加法器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址?

六、段

如圖 2.9 所示,我們可以認為:地址10000H~100FFH 的內存單元組成一個段,該段的起始地址(基礎地址)為 10000H,段地址為 1000H,大小為 100H

我們也可以認為地址 10000H~1007FH、10080H~100FFH 的內存單元組成兩個段,它們的起始地址(基礎地址)為:10000H和10080H,段地址為:1000H和1008H,大小都為 80H。

答案解析:從最小為 0H,最大?FFFFH 計算

七、段寄存器

8086 CPU 有4個段寄存器:CS、DS、SS、ES

八、CS 和 IP

CS 和 IP 是 8086 CPU 中兩個最關鍵的寄存器,它們指示了 CPU 當前要讀取指令的地址。CS 為代碼段寄存器,IP 為指令指針寄存器?

8086 機中,任意時刻,CPU 將 CS:IP 指向的內容當作指令執行?

圖 2.10 說明如下:?

????????1. 8086CPU 當前狀態:CS 中的內容為2000H,IP中的內容為0000H;

????????2. 內存 20000H~20009H 單元存放著可執行的機器碼:?

九、修改 CS、IP 指令

mov 指令不能用于設置 CS、IP 的值!!!

若想同時修改 CS、IP 的內容,可用形如“jmp 段地址:偏移地址”的指令完成,例如

jmp 2AE3:3,執行后:CS=2AE3H,IP=0003H,CPU 將從 2AE33H 處讀取指令。

jmp 3:0B16,執行后:CS0003H,IP=0B16H,CPU 將從 00B46H 處讀取指令。??

若想僅修改 IP 的內容,可用形如 “jmp 某一合法寄存器” 的指令完成?

“jmp 某一合法寄存器” 指令的功能為:用寄存器中的值修改 IP?

答案解析:四次,jmp 前后各一次?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18862.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Adobe Bridge BR v14.0.3 安裝教程 (多媒體文件組織管理工具)

Adobe系列軟件安裝目錄 一、Adobe Photoshop PS 25.6.0 安裝教程 (最流行的圖像設計軟件) 二、Adobe Media Encoder ME v24.3.0 安裝教程 (視頻和音頻編碼渲染工具) 三、Adobe Premiere Pro v24.3.0 安裝教程 (領先的視頻編輯軟件) 四、Adobe After Effects AE v24.3.0 安裝…

mysql手動新建數據庫

點擊號輸入數據庫名,端口號,密碼,連接到sa數據庫新建數據庫,語言必須選擇utf8mb4新建數據庫用戶給數據庫用戶設置對應權限給數據庫用戶勾選權限

登峰造極,北斗相伴——紀念人類首次登頂珠穆朗瑪峰71周年

71年前的今天,1953年5月29日11時30分,人類實現了一個偉大的壯舉:首次登上了珠穆朗瑪峰,這座海拔8848.86米的世界最高峰。這是一次充滿了艱辛、勇氣和智慧的探險,也是一次改變了人類歷史和文化的探險。 自那以后&#…

【全球展會招商】2025COSP深圳國際戶外展乘風而至,啟赴新程!

展會介紹 “2025-COSP深圳國際戶外展覽會”將于展出面積達40,000㎡,展出品牌60家包含戶外露營展區、 車旅生活展區 、戶外運動展區、水上運動展區 、 民宿旅居展區等熱門產品專區,充分滿足供應商及采購商、行業人士及運動愛好者的需求,打造展…

如何為 pip 配置鏡像源加速下載

在使用 Python 的過程中,我們常常需要使用 pip 來安裝各種第三方庫。然而,由于網絡環境的影響,默認的 PyPI 源可能會出現下載速度緩慢甚至無法連接的情況。為了解決這一問題,我們可以通過配置 pip 的鏡像源來加速下載。 本文將詳…

Unable to parse response body for Response{requestLine=PUT

1 異常信息: Caused by: java.lang.RuntimeException: Unable to parse response body for Response{requestLinePUT /an_path_statistic_log/_doc/11?timeout1m HTTP/1.1, hosthttp://192.168.3.60:9200, responseHTTP/1.1 200 OK}at org.springframework.data.e…

于AI對話 --如何更好的使用AI工具

文章目錄 于AI對話 --如何更好的使用AI工具1、認識AI工具:2、對話原則:3、提問步驟:4、AI可以學習什么?5、提問技巧:1、提出假設性問題:2、(鼓勵引導式提問)跨學科思考:舉個例子: 3、…

刪除的短信怎么恢復?專業與非專業方法的全面比較

在日常清理手機內存的過程中,我們可能會不小心刪除短信。這些短信可能包含重要的數據和聯系人信息。面對這種情況,許多人會感到困惑和無助。那么,刪除的短信怎么恢復呢?本文將為您全面比較專業與非專業的方法,幫助您找…

揚騰創新golang2輪面試,二面相當硬核。我差點崩潰。。

一面 1、自我介紹,換工作的原因是什么? 2、物流開發平臺是做什么?鏈路上都有哪些核心模塊? 一個單下過來,分配給哪個3PL?有什么要求嗎?是怎么設計的? 保證履約系統穩定性方面有做…

【大數據面試題】33 手寫一個 Flink SQL 樣例

一步一個腳印,一天一道大數據面試題 博主希望能夠得到大家的點贊收,藏支持!非常感謝~ 點贊,收藏是情分,不點是本分。祝你身體健康,事事順心! 我們來看看 Flink SQL大概流程和樣例: …

基于雙向長短時記憶網絡的ECG心電信號識別(包括原始時域信號與時頻域特征提取,MATLAB R2021B)

循環神經網絡RNN,是一種鏈式結構,能夠對連續輸入的序列同時處理,且有不錯的效果。RNN具有記憶功能且能夠隨時接受并處理輸入數據,這得益于其特殊的連接方式,即神經元之間以一定的方向互相連接構成環,內部時…

如何使用寶塔面板搭建Tipask問答社區網站并發布公網遠程訪問

文章目錄 前言1.Tipask網站搭建1.1 Tipask網站下載和安裝1.2 Tipask網頁測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道(云端設置)2.3 Cpolar穩定隧道(本地設置) 3. 公網訪問測試4.結語 前…

摸魚大數據——Hive表操作——復雜類型

1、hvie的SerDe機制 其中ROW FORMAT是語法關鍵字,DELIMITED和SERDE二選其一。本次我們主要學習DELIMITED關鍵字相關知識點 如果使用delimited: 表示底層默認使用的Serde類:LazySimpleSerDe類來處理數據。 如果使用serde:表示指定其他的Serde類來處理數據,支持用戶自…

【python 進階】 繪圖

1. 將多個柱狀繪制在一個圖中 import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as pd# 創建示例數據 categories [A, B, C, D, E] values1 np.random.randint(1, 10, sizelen(categories)) values2 np.random.randint(1, 10, siz…

代碼隨想錄35期Day53-Java

Day53題目 LeetCode.1143最長公共子序列 核心思想:這道題是我動態規劃的啟蒙題目,已經做了很多遍了,dp數組的變化方法是:相同則是左上角1, 不相同則是上和左中的最大值 class Solution {public int longestCommonSubsequence(String text1, String text2) {int[][] dp new …

前端Vue自定義輪播圖組件的設計與實現

摘要 隨著技術的發展,前端開發的復雜性日益增加。傳統的整塊應用開發方式在面對頻繁的功能更新和修改時,往往導致整體邏輯的變動,從而增加了開發和維護的難度。為了應對這一挑戰,組件化開發應運而生。本文將以Vue中的自定義輪播圖…

GEE 利用增強的Sentinel-2像元物候特征精確提取水稻分布

題目:An enhanced pixel-based phenological feature for accurate paddy ricemapping with Sentinel-2 imagery in Google Earth Engine 期刊:ISPRS Journal of Photogrammetry and Remote Sensing(IF:14.9) 第一作者&#xff1a…

HiWoo Box工業4G網關

在飛速發展的工業4.0時代,數據已成為驅動工廠智能化、自動化的核心力量。而如何將這些散布在工廠各個角落的數據高效、安全地匯集起來,成為企業提升生產效率、降低運營成本的關鍵。今天,我們將為您介紹一款4G網關產品——HiWoo Box&#xff0…

揭秘SQL中的公用表表達式:數據查詢的新寵兒

歡迎來到我的博客,代碼的世界里,每一行都是一個故事 揭秘SQL中的公用表表達式:數據查詢的新寵兒 前言公用表表述的概述非遞歸CTE的作用遞歸CTE的作用CTE性能優化 前言 你是否曾經為SQL查詢的復雜性而困擾不已?尤其是那些讀寫層子…

服務器數據恢復—RAID5陣列崩潰如何恢復上層OA和oracle數據庫的數據?

服務器數據恢復環境&故障: 某公司的一臺服務器中的raid5磁盤陣列有兩塊磁盤先后掉線,服務器崩潰。故障服務器的操作系統為linux,操作系統部署了oa,數據庫為oracle。oracle數據庫已經不再對該oa系統提供后續支持,用…