1、and和or指令
and指令:逻辑与指令,按位进行与运算
技巧:通过该指令可将操作对象的相应位设为0,其他位不变
or指令:逻辑或指令,按位进行或运算
技巧:通过该指令可将操作对象的相应位设为1,其他位不变
2、ASCII码
编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。
例:61H表示‘a’
3、以字符形式给出的数据
在汇编语言中,用‘……’的方式指明数据以字符形式给出。编译器将把它们转化成相应的ASCII值。
例:db ‘UnIX’
mov al,‘a’
4、大小写的转换
ASCII码中小写字母与大写字母相差32(20H)。
例:a比A大32(20H)
5、[bx+idata]
表示一个内存单元,它的偏移地址为(bx)+idata (bx中的数值加上idata)
格式:
mov ax,[bx+idata]
mov ax,[idata+bx]
mov ax,200[bx]
mov ax,[bx].idata
6、用[bx+idata]的方法进行数组的处理
mov ax,datasg ;datasg类似数组名
mov ds,ax
mov bx,0
mov cx,5
s:mov al,[bx]
and al,1101111b
mov [bx],al
inc bx
loop s
[bx+idata]的方式为高级语言实现数组提供了便利机制。
7、SI和DI
SI和DI是8086CPU中和bx功能相近的寄存器,但是SI和DI不能分成两个8位寄存器来使用。
例:ds:[bx] ds:[SI] ds:[DI]
codesg segment
mov ax,datasg
mov ds,ax
mov si,0
mov di,16
mov cx,8
s:mov ax,[si]
mov [di],ax
add si,2
add di,2
loop s
codesg ends
也可用[bx(si、di)+idata]的方式
8、[bx+si]和[bx+di]
格式:
mov ax,[bx+si]
mov ax,[bx][si]
9、[bx+si+idata]和[bx+di+idata]
格式:
mov ax,[bx+si+idata]
mov ax,idata[bx][si]
mov ax,[bx].idata[si]
mov ax,[bx][si].idata
10、不同寻址方式的灵活运用
[idata]用一个常量来表示地址,可用于直接定位一个内容单元
[bx]用一个变量来表示内存地址,可用于间接定位一个内存地址
[bx+idata]用一个变量和常量来表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元
[bx+si]用两个变量来表示地址
[bx+si+idata]用一个常量和两个变量来表示地址
11、二重循环
在每次开始内循环时,将外层循环的CX的数值存起来,在执行外层循环loop前恢复外层循环的cx数值。
可用寄存器来临时保存cx中的数值,如果寄存器不够可以使用内存,推荐使用栈空间。