這章要解決數(shù)據(jù)處理的兩個問題:數(shù)據(jù)地址和數(shù)據(jù)長度
數(shù)據(jù)地址
數(shù)據(jù)地址就是由段地址和偏移地址組成的坠七。在8086CPU中,段地址寄存器有:ds管削、cs、ss撑螺、es含思;偏移地址寄存器有:bx、si甘晤、di和bp
段地址寄存器
- 一般偏移地址用的是bx含潘,而指令中也沒有顯性地給出段地址痘系,則段地址寄存器默認(rèn)為ds
- 一般偏移地址用的是bp基协,而指令中也沒有顯性地給出段地址,則段地址寄存器默認(rèn)為ss
偏移地址寄存器
這幾個寄存器要么單獨使用补憾,要么只能是(bx酌伊,bp)組和(si,di)兩兩組合4種方式缀踪。即如下幾種(idata是指確定的數(shù)字):
mov ax,[bx]
mov ax,[bp]
mov ax,[si]
mov ax,[di]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp+si]
mov ax,[bp+di]
mov ax,[bx+si+idata]
mov ax,[bp+di+idata]
mov ax,[bx+si+idata]
mov ax,[bp+di+idata]
具體位置
匯編指令 | 指令執(zhí)行前數(shù)據(jù)的位置 | 備注 |
---|---|---|
mov bx,[0] | 內(nèi)存居砖,[0]內(nèi)存單元 | |
mov bx,ax | CPU內(nèi)部,在ax寄存器里 | |
mov bx驴娃,10 | CPU內(nèi)部奏候,在指令緩沖器里 | 這種直接給出具體數(shù)字的叫做立即數(shù) |
數(shù)據(jù)長度
8086里只能處理兩種長度的數(shù)據(jù),byte和word唇敞。在具體操作中
可以隱式地根據(jù)寄存器得到
如果是ax則是word蔗草,如果是al則是byte。
顯示地指定
mov word ptr ds:[0],1
add byte ptr ds:[0],1
div
div是除法指令
- 除數(shù):可以是8位可以是16位疆柔,一般存在除了段寄存器外的寄存器里或者內(nèi)存單元里
- 被除數(shù):默認(rèn)放在ax或者ax和dx中咒精,如果除數(shù)是8位,則被除數(shù)是16位旷档,放在ax中模叙,如果除數(shù)是16位,則被除數(shù)是32位鞋屈,高位放在dx中范咨,低位放在ax中故觅。
- 結(jié)果:如果除數(shù)是8位,則al中放商渠啊,ah放余數(shù)输吏,如果除數(shù)是16位,則ax中放商替蛉,dx中放余數(shù)贯溅。
一些偽指令
dd,dw灭返,db
dd是雙字型盗迟,占2個字
dw是單字型,占1個字
db是字符型熙含,占1個字節(jié)
dup
配合上面的dd罚缕,dw,db使用怎静,進(jìn)行數(shù)據(jù)的重復(fù)邮弹,比如
db 3 dup(0) //相當(dāng)于db 0,0蚓聘,0
db 3 dup(0腌乡,1,2) //相當(dāng)于db 0夜牡,1与纽,2,0塘装,1急迂,2,0蹦肴,1僚碎,2