基礎(chǔ)-1

存儲(chǔ)單元

微型機(jī)存儲(chǔ)器的存儲(chǔ)單元可以存儲(chǔ)1個(gè)byte(字節(jié)),1個(gè)byte包含8個(gè)bit(位)

byte=B ? ??

1KB=1024B

1MB=1024KB

明確三個(gè)概念:

數(shù)據(jù),控制,地址


一些基礎(chǔ)操作及常識(shí)

MOV AX [3] ; //將3號(hào)單元的內(nèi)容寫入AX

8086數(shù)據(jù)線為16位 80396 32位 8088 8位


存儲(chǔ)器

RAM 隨機(jī)存儲(chǔ)器 ?掉電丟 ? ? 緩存等,顯存,存放程序等

ROM 只讀存儲(chǔ)器 ?掉電不丟 ? 多放模塊的BIOS



由圖可知:通過控制內(nèi)部存儲(chǔ)空間上數(shù)據(jù)的更改來控制外設(shè)。而注意這些邏輯地址是擬想的連續(xù)空間,其實(shí)是對(duì)器件的存儲(chǔ)空間的連續(xù)尋址電路。

所以在對(duì)系統(tǒng)及其片上資源進(jìn)行控制時(shí),需要了解其內(nèi)部空間地址的分布

寄存器

CPU內(nèi)部是由運(yùn)算器(信息處理),控制器,寄存器(信息存儲(chǔ))等構(gòu)成。而程序員就是通過修改寄存器來實(shí)現(xiàn)對(duì)CPU的控制。

8086中 寄存器為16位

一般寄存器:AX(AH,AL) BX(BH,BL)等

兩個(gè)BYTE(8位)組成一個(gè)字(16位)。

匯編不區(qū)分大小寫

在使用寄存器需要注意:

1,AL,AH被使用時(shí)會(huì)被單獨(dú)看成一個(gè)8位寄存器,AL的溢出進(jìn)位不會(huì)存到AH中

2,寄存器與寄存器或者數(shù)據(jù)之間相互交換的時(shí)候,要注意位數(shù)相對(duì)應(yīng),以及存儲(chǔ)數(shù)字的上下限。

16位CPU特征:

8086中地址總線為20位,其提供的數(shù)據(jù)位數(shù)為16為,所以要熟悉段地址+偏移地址的想法來進(jìn)行尋址物理地址


這種方式形成了段思維,其完全以為這種尋址方式導(dǎo)致的,實(shí)際中不存在將內(nèi)存分段,一般段地址需要在相加器中移位后和偏移地址相加


段寄存器cs和ip指令指針寄存器

8086中段寄存器有CS,DS,ES,SS ?它們?cè)?086要訪問內(nèi)存時(shí)提供內(nèi)存單元的段地址


其中要主要地址合并時(shí)的操作

傳送指令mov 不能修改cs和ip的值

可以通過轉(zhuǎn)移指令修改,如 jmp 段地址:偏移地址

例:jmp 2AE3:3 執(zhí)行后:CS=2AE3H ?IP=0003H ,之后下一步將在2AE33H處取指令。

再如:jmp 3:0B16 ?->: CS=0003H ?IP=0B16H

僅修改IP寄存器:

jmp ax ; ?//僅將ax中的值修改IP寄存器,CS寄存器中的值不變。

DEBUG SHELL

在DOSBOX環(huán)境下:

MOUNT C C:/DEBUG ? //路徑下有DEBUG.EXE

C: ? ?//進(jìn)入到掛載的C盤 即C:/DEBUG

DEBUG //進(jìn)入DEBUG環(huán)境

R命令:查看或者修改當(dāng)前所有寄存器的狀態(tài)和值

-R ? //查看

-R AX //修改AX寄存器的值

-D命令:例

-D 1000:0 //格式為段地址:偏移地址 ?(終止偏移地址)

-E 可以指定修改內(nèi)存中的內(nèi)容,以16進(jìn)制形式數(shù)據(jù)

-U 下方

-T 下方

-A 下方


寄存器(內(nèi)存訪問)


一些稱呼:

地址字單元---在地址開始的連續(xù)兩個(gè)存儲(chǔ)單元(16位,2個(gè)BYTE)

DS和[address]

DS段寄存器,用來存儲(chǔ)默認(rèn)的段地址:

mov bx,1000h

mov ds,bx

mov ax [0] ;//8086通過ds中默認(rèn)的段地址加上[0]偏移地址,取出1000h地址處的數(shù)據(jù)傳入AX寄存器。

且注意:8086不支持對(duì)段寄存器傳入數(shù)據(jù)操作。

注意:字?jǐn)?shù)據(jù)在內(nèi)存的存儲(chǔ)方式


2C34H在10000H上的存儲(chǔ)方式(8086)

mov,add,sub

類似的add,sub指令不能對(duì)段寄存器進(jìn)行直接操作,其他均可以

數(shù)據(jù)段:

自規(guī)定一段內(nèi)存地址專門存放數(shù)據(jù)用,例如用DS存放數(shù)據(jù)段的段地址

實(shí)際上:數(shù)據(jù)和程序沒有區(qū)別,被CS:IP指向的信息是程序;被傳送,運(yùn)算等指令操作的是數(shù)據(jù)。


reference:《匯編語言》王爽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容