第七章-更灵活定位内存地址
7.1 and和or指令
定义:略
and指令的一些功能
- 通过该指令将操作对象的相应位设为0,其他位不变。
and al,01111111 ;将第8位设置为0
or指令的一些功能
- 通过该指令将操作对象的相应位设为1,其他位不变。
and al,010000000 ;将第7位设置为1
7.2关于ASCII码
- 所谓编码方案,就是一套规则,约定了用什么样子的信息来表示现实对象。
7.3以字符形成给出数据
db 'unIX'
7.4大小写转换问题
- 小写字母的ASCII码值比大写字母的大20H。十进制是32
- 若是二进制大小写只有一位的区别,0和1
assume cs:codesg, ds:datasg
datasg segment
db 'BaSiC'
db 'MinIX'
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,5
S: mov al,[bx]
and al,11011111b
mov [bx],al
inc bx
loop s
mov bx,5
mov cx,5
s0: mov al,[bx]
or al,00100000b
mov [bx],al
inc bx
loop s0
codesg ends
end start
7.5[bx+idata]
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
7.6用[bx+idata]的方式进行数组的处理
assume cs:codesg, ds:datasg
datasg segment
db 'BaSiC'
db 'MinIX'
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,5
S: mov al,[bx]
and al,11011111b
mov [bx],al
mov al,[5+bx]
or al,00100000b
mov [5+bx],al
inc bx
loop s
codesg ends
end start
7.7SI和DI
- SI和DI和BX相似,但是不能拆成两个8位寄存器
mov bx,0
mov ax,[b]
mov si,0
mov ax,[si]
mov di,0
mov di,[di]
mov bx,0
mov ax,[b+1]
mov si,0
mov ax,[si+1]
mov di,0
mov ax,[di+1]
7.8[bi+si]和[bi+di]
mov ax,[bx+si]
#或者
mov ax,[bx][si]
7.9[bx+si+idata]和[bx+di+idata]
偏移地址为:[bx+di+idata]