以下是文字提取部分灾测,閱讀完畢的同學可以離開了
我們之前講過
將;2字節(jié);的內容放入ax的指令是
mov ax,[0]
這個偏移地址同樣可以表示為bx
mov ax,[bx]
它的;段地址;依然在ds中
以后;idata;這個詞代表常量
mov ax,[idata]代表偏移地址是;常量;
我以后用()表示一個寄存器或內存單元的;內容;
稱;(ax);為ax中的內容
這就好比穿衣服
loop顧名思義是;循環(huán)操作;
執(zhí)行l(wèi)oop時會有兩部操作
;(cx)=(cx)-1;
;(cx);如果為0轉到標號處闰蚕,反之繼續(xù)執(zhí)行
下面的s就是所謂的;標號;
這個程序要計算2^12
注意:匯編中;不能;以字母開頭
A000H要寫成;0;A000H
debug時候使用;p;可以自動執(zhí)行l(wèi)oop
debug時使用g可以在;指定位置開始;執(zhí)行程序
Debug和Masm對指令的處理是;不一樣;的
比如mov al,[0]
debug認為把;ds:0;的內容放入al
但masm卻認為把;0;放入al
如果想實現(xiàn)把;內存單元;放入al
你得mov bx,0 mov al,[bx]
或者mov al,ds:[0]
如果你想把ffff:0~ffff:b內存單元中的;數(shù)據(jù)累加;到dx
請問可以嗎?如何做述雾?
我們先分析一下;數(shù)據(jù)大小;
8bit的最大值是;FFH;
FFH×(b+1)=;BF4H;
而dx是16bit撇叁,最大數(shù)據(jù)是;FFFFH;
顯然;可以存下;
但是有個問題:;dx是16bit;
內存單元中的數(shù)據(jù)是8bit
如果用mov dx,[0]
顯然要放;兩個內存單元的數(shù)據(jù);才夠dx揮霍
于是很不爭氣地成了下面這樣
但是改用dl的話
顯然dl是8bit劈伴,最大數(shù)據(jù)是:;FFH;
聰明的你有沒有什么;好想法呢;
你可以把數(shù)據(jù)存儲在;al;里
然后;ah置零;弊攘,此時數(shù)據(jù):00FFH
再;累加到dx;
最后程序是這樣的
inc操作是;加一;
之前的操作牵辣,段地址都是;默認在ds中;
其實我們也可以顯式指出
mov ax,ds:[bx]
mov ax,cs:[bx]
mov ax,ss:[bx]
mov ax,es:[bx]
這些;ds:,cs:,ss:,es:;
我們稱為段;前綴;
段前綴是用來解決下面這樣的問題