第七章 更靈活的定位內存地址的方法 知識梳理
and和or指令
and邏輯與指令
作用:通過該指令可以將操作對象的相應位設為0,其他位不變
or 邏輯或指令
作用:通過該指令可以將操作對象的相應位設為1,其他位不變
[bx+idata] [bx+si] [bx+di]
si,di 在8086CPU中和BX功能相近的寄存器
si和di不能分成兩個8位寄存器來使用!
等效寫法
兩個變量表示地址:[bx+si] ↔ [si+bx], [bx][si], [si][bx]
一個變量一個常量表示地址:[bx+idata] ↔ [bx]idata, idata[bx]
兩個變量一個常量表示地址:[bx+si+idata] ↔ [bx][si][idata], [bx][si+idata], idata[bx][si], idata[bx+si]
註意多種尋址方式的應用技巧。
大小寫轉換問題
字母大小寫的ASCII碼
會發現只有第三位不同,可以利用or或and指令來修改
變為大寫字母 and al,11011111b
變為小寫字母 or al,00100000b
不同尋址方式的靈活運用
註意:
1.在debug中,a命令不支持諸如‘a‘這樣的寫法,e命令支持。
2.註意二重循環
外重循環和內層循環對於cx的使用,解決方法(1)將外層循環cx的值保存在dx中
(2)暫存數據時利用棧,push,pop
3 等價關系
dw 0,0,0,0,0,0,0,0↔dw 8 dup(0)
mov al,[bx+3]
and al,11011111 ↔ and byte ptr ds:[bx+3],11011111b
mov [bx+3],al
第七章 更靈活的定位內存地址的方法 知識梳理