更靈活的定位內(nèi)存地址的方法
- and和or指令
- and指令: 邏輯與指令、按位進(jìn)行與運(yùn)算。
Example:
mov al, 01100011B
and al, 00111011B
執(zhí)行后: al = 0010001B
通過該指令可將操作對象的響應(yīng)為設(shè)為0,其他不變。 - or指令:邏輯或指令,按位進(jìn)行或運(yùn)算。
Example:
mov al, 01100011B
or al, 00111011B
執(zhí)行后: al = 01111011B
通過該指令可以將操作對象的相應(yīng)位設(shè)為1,其他位不變
關(guān)于ASC||碼
鍵盤'a'
→內(nèi)存61H
→顯存(軟件從內(nèi)存中取出數(shù)據(jù),并送到顯存)61H
→工作在文本模式下的顯卡,用ASC||解釋顯存中的內(nèi)容'a'
→顯卡驅(qū)動(dòng)顯示器'a'
以字符形式給出的數(shù)據(jù)
關(guān)鍵詞db
可以定開辟一或多字節(jié)空間
db 61H ;定義了一個(gè)字節(jié)型數(shù)據(jù)
db 'unIX' ;相當(dāng)于 `db 75H, 6EH, 49H, 58H`,定義了四個(gè)字節(jié)型數(shù)據(jù)
- 大小寫轉(zhuǎn)換
一個(gè)字符轉(zhuǎn)換為小寫:
mov al, [bx] ;[bx]為將要轉(zhuǎn)換的內(nèi)存單元
or al, 00100000B
mov [bx], al
一個(gè)字符轉(zhuǎn)換為大寫:
mov al, [bx] ;[bx]為將要轉(zhuǎn)換的內(nèi)存單元
and al, 11011111B
mov [bx], al
- 不同的尋址方式
[bx]、 [si]、[di]
[bx+idata]、[si+idata]、[di+idata]
[bx+si]、[bx+di]
[bx+si+idata]、[bx+di+idata]
其中: idata[bx]可以理解將idata為數(shù)組地址,[bx]為下標(biāo)
- 注意地方
- SI和DI不能夠分成兩個(gè)8為寄存器來使用:
- 程序剛開始時(shí)(ds尚未被賦值時(shí)),源程序中第一個(gè)段的段地址為:ds+10H;
- 一般來說,在需要暫存數(shù)據(jù)的時(shí)候,我們都應(yīng)該使用棧;