彙編學習筆記 五

2022-06-13 01:24:20 字數 2284 閱讀 5146

記憶體位址由段位址暫存器和偏移位址暫存器共同儲存

辣麼為什麼位址要分段呢?

8086暫存器有 20根 資料線 cpu為16位的無法處理 20 位 的位址資訊

所以額外假設了乙個位址加法器

運算規則:

實體地址 = 段位址 * 16 + 偏移位址

基礎位址 = 段位址 * 處理器位數

實體地址 = 基礎位址 + 偏移位址

個人理解

怎麼表示學校:兩種方法

1、從家 走 10000m 到學校

2、從家 走 700m 到小姐姐家,再走 9300m到學校

呃,有點體現不出,只能體現偏移。

這麼想,我每天早上必須並且只會和乙個人一起去學校(不要問為什麼,容易百年 | ),

而且它們的家都不在學校且位於家和學校的直線上。

今天小姐姐約我,所以我第一站需要到小姐姐家,等小姐姐,第二站再到學校

明天另乙個小姐姐約我,所以我得先到另乙個小姐姐家,再去學校。

所以我們上學的第一段一定是我家到某個(小姐姐)朋友家的距離,第二段才是到(小姐姐)朋友家家到學校的距離

這就是所謂的段位址(到(小姐姐)朋友家的距離的集合)

ps:每個(小姐姐)朋友家都不一樣(莫想整什麼姐妹花),到小姐姐家的距離的最大,和小姐姐家到學校的最大值是一樣的

指令:

cpu如何區分資料和指令:

8086 cpu 在任意時刻,將cs,ip所指向的內容當作指令。

在cpu小姐姐休息的時候,cs和ip也不幹活,這時候都是二進位制,當cpu小姐姐開始工作的時候,cs和ip這兩個舔狗就會十分機智的載入好指令資訊

所以cpu小姐姐識別指令和資料依賴於cs和ip這兩個舔狗(萬一哪天不添了怎麼辦,那你只能忍痛割愛,扔掉這個小姐姐了)

……未完續待……

(自己腦補動畫)

更新:2020-02-25 20:35:36

mov 指令不能作用於cs、ip

能夠修改 cs、ip指令稱為轉移指令

jmp 指令,修改cs和ip暫存器

jmp 目前需要的 寫法(還有其他寫法)

jmp 2000:0

jmp register

例題:假設 cs = 2000h, ip = 0000 寫出下列指令的執行過程

a 2000:0 cs = 2000h ip = 0

mov ax, 6622h cs = 2000h ip = 0 + 3 = 3

jmp1000:3 cs = 1000h ip = 3 + 5 = 8

(被指向但沒有被讀取)

movcx, ax

a:1000:0 cs = 1000h ip = 3

movax, 0123h

mov ax, 0 cs = 1000h ip = 3 + 3 = 6

mov bx, ax cs = 1000h ip = 6 + 2 = 8

jmp bx cs = 1000h ip = 8 + 2 = 10

(被指向,沒有被讀取)

mov cx, 0

ps:jmp 下面的指令被指向後,不一定被讀取因為 cs 和 ip 可能被跳轉到其他地方兩個比較懵逼的指令:(個人感覺可以用於實現入棧的現場儲存)

call 指令 將ip儲存起來 記憶體中

ret 指令 將儲存起來的ip 拿出來

cpu從cs:ip所指向的記憶體單元讀取指令, 存放到指令快取器中

ip = ip + 所讀指令長度,從而指向下一條指令

執行指令快取器中的內容,回到第一步

為什麼這麼設計指令執行方式?(老師沒講清楚,暫留)

目前只知道是為了實現call指令

-r 檢視、改變cpu暫存器內容,並將cs:指向的機器碼翻譯成彙編指令;

-d 檢視記憶體中的內容

-u 檢視記憶體中的內容,乙組合語言的方式

-a 往記憶體中寫入一條彙編指令

-t 執行一條機器指令

-e 改寫記憶體中的內容

乙個有意思的發現:

alt + 小鍵盤數字 = ascii 在txt中

彙編學習筆記(五)

第乙個程式 hello world 使用記事本編寫 如下,並儲存為hello.asm hello.asm,hello word第乙個masm彙編 assume cs code code segment db hello world start mov ax,code mov ds,ax mov dx...

ARM彙編程式設計學習筆記(五)

硬體平台 使用友善之臂mini2440平台。軟體平台 keil 下面直接給出例子和注釋。關於使用keil的一些注意事項,以及除錯的注意事項,放在本文末給出。area led,code,readwrite 宣告乙個 段,可讀寫,名字為led entry 標記下面的指令為入口點 include regi...

彙編學習筆記 第五章

從鍵盤獲取乙個位元組 輸出乙個位元組 輸出字串 mov dx,offset lable mov ah,09h int 21h cmp的詳細解釋 cf標誌位 無符號數 of標誌位 帶符號數 單標誌條件轉移指令 無符號數條件轉移指令 帶符號數條件轉移指令 cx暫存器條件轉移指令 of 0 的情況比較方便...