1. 程式人生 > >匯編 第一天

匯編 第一天

.... info blog 內容 com 匯編語言 物理地址 匯編 png

1.看的小甲魚的視頻。

2.我用的是 mac筆記本。今天把dos裝上了,用來debug。裝的教程參考的這:https://blog.csdn.net/Zach_z/article/details/78171329

重點在於:用 mount c (資源地址) 掛上資源,後進入 c盤,運行debug。

3.知識點 :

3.1 匯編語言對大小寫不敏感

3.2 debug的六個功能:

R 查看、改變寄存器的內容。( r ax )

D 查看 內存中的內容

E 改寫 內存中的內容 (數字、機器碼)

A 以匯編指令的格式在內存中寫一條機器指令

T 執行一條機器指令

U 將內存中的機器指令翻譯成匯編指令

3.3 CS 為代碼段寄存器 放的是指令的段地址 和 IP為 指令指針(控制)寄存器 放的是 指令的偏移地址。

  CS和IP 指示了CPU當前要讀取的指令的地址。

3.4 CPU要訪問內存單元時,要得到內存單元的物理地址

  物理地址=段地址*16+偏移地址 (16進制乘16,相當於向左進一位 ——> N進制的數*N 相當於左移1位)

  原因:(8086CPU)內部的總線為16位,要與外部20位的地址總線轉換。 (二進制 * 16相當於偏移 4位,總共就為20位了)

3.5 任意兩個連續的內存單元(N,N+1)可以看成地址為N的字單元中,地位字節 單元(N)和高位字節單元(N+1)。

4.今天的練習題: 內存情況如下,寫出指令執行後寄存器內的值。

技術分享圖片

解題思路,一、內存裏填內容 e 二、寫匯編 a 三、逐步執行t

e 1000:0 23 11 22 66 (連續的內存空間)

r

a cs:ip mov ax,1000 //把段地址數據放入通用寄存器中

cs:ip mov ds,ax //把通用數據的內容放入段寄存器中

 cs:ip mov ax,[0] // 把段內偏移地址為0的 內存單元的內容送入寄存器中

 cs:ip mov bx,[2]

 ....

t //單步執行

匯編 第一天