1.and和or指令
(1)and逻辑与,按位执行与运算
例:mov al,01100011B
and al,00111011B
得:al=00100011B
用此指令可将对象的相应位设为0,其他位不变
(2)or逻辑或,按位执行或运算
例:mov al,01100011B
or al,00111011B
得:al = 01111011B
用此指令可将对象的相应位设为1,其他位不变
2.关于ascii码
3.以字符形式给出的数据
在汇编程序中,用‘......’的方式指明数据是以字符的形式给出的,编译器将把他们转化为对应的ascii码


db ‘unIX’相当于db 75H,6EH,49H,58H , u、n、I、X的ascii码分别为75H、6EH、49H、58H
mov al,'a'相当于mov al,61H,a的ascii码为61H
可以用debug的d命令查看data段的内容
4.大小写转换问题
小写字母的ascii码比大写字母的大20H


就ascii码的二进制形式来看,除第五位,大写字母和小写字母的其他位都一样
大写第五位为0,小写为1
将1改成0,就从小写改成了大写

5.[bx+idata]
之前用[bx]指明一个内存单元
还可以用[bx+idata]表示内存单元,他的偏移地址为(bx)+idata(bx中的数值加上idata)
mov ax,[bx+200]的含义:送一个字,偏移地址为bx的数值加上200
也可以写成
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
6.用[bx+idata]的方式进行数组的处理




7.SI和DI
si和di与bx功能相近,但不能分为两个8位寄存器
8.[bx+si]和[bx+di]
[bx+si]表示一个内存单元,其偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)
mov ax,[bx+si]
也可写成mov ax,[bx][si]
9.[bx+si+idata]和[bx+di+idata]
[bx+si+idata]偏移地址为(bx)+(si)+idata
mov ax,[bx+si+idata]也可写成:
mov ax,[bx+idata+si]
mov ax,[idata+bx+si]
mov ax,idata[bx][si]
mov ax,[bx].idata[si]
mov ax,[bx][si].idata
10不同寻址方式的灵活应用
浙公网安备 33010602011771号