存儲(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)存單元的段地址

傳送指令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ǔ)方式

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:《匯編語言》王爽