7.1 and 和or 指令
- and指令 (al=01100011B)
- 逻辑与指令,按位进行与运算。
- 通过该指令可将操作对象的相应位设为0, 其他位不变。
- or指令
- 逻辑或指令, 按位进行或运算
- 通过该指令可将操作对象的相应位设为1, 其他位不变。
7.2 关千ASCII 码
7.3 以字符形式给出的数据
- 我们可以在汇编程序中,用'……'的方式指明数据是以字符的形式给出的,编译器
将把它们转化为相对应的ASCII 码。
7.4 大小写转换的问题
- 可以看出,就ASCII 码的二进制形式来看,除第5 位(位数从0 开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCII 码的第5 位(位数从0 开始计算)为0, 小写字母的第5 位为1 。这样,我们就有了新的方法,一个字母,我们不管它原来是大写还是小写,我们将它的第5 位置0, 它就必将变为大写字母;将它的第5 位置1 ,它就必将变为小写字母。在这个方法中,我们不需要在处理前判断字母的大小写。比如:对于“BaSiC” 中的“B"’ 按要求,它已经是大写字母了,不应进行改变,我们将它的第5 位设为0, 它还是大写字母,因为它的第5 位本来就是0 。
- 利用
and
与or
指令
assume cs:code,ds:datasg
datasg segment
db 'BaSiC'
db 'INforMatioN'
datasg ends
code segment
start:
mov ax,datasg
mov ds,ax
mov cx,5
mov bx,0
s0: mov al,[bx]
and al,11011111b
mov [bx],al
inc bx
loop s0
;mov bx,5
mov cx,11
s1: mov al,[bx]
or al,00100000b
mov [bx],al
inc bx
loop s1
mov ax,4c00h
int 21h
code ends
end start
7.5 [bx+idata]
- [bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx 中的数值加上idata) 。
7.6 用[bx+idata] 的方式进行数组的处理
7.7 SI 和DI
7.8 [bx+si]和[bx+di]
- 基址变址法
- 注:
mov ax,[bx+si]
等同于mov ax,[bx][si]
7.9 [bx+si+idata] 和[bx+di+idata]
7.10 不同的寻址方式的灵活应用