本文已参与「新人创作礼」活动,一起开启掘金创作之路。
目录
7.1and和or指令
and指令的一点小作用
or指令的一点功能
7.3以字符形式给出的数据
可以在汇编程序中,‘......’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。
大小写字母ASCII码规律
除第六位外,其余位的值都一样
将字母第六位置0,无论他原来是大写还是小写,都必将变为大写字母
将第六位置1,则必变为小写字母
Eg:
例如 BasIc转化为小写字母
第六位置零(转大写字母)
or [bx],00100000b
第六位置1(转小写字母)
and [bx],11011111b
and操作对象组合
AND destination,source
mem: memory的简写,表示内存单元
reg: register的简写,表示寄存器
imm:立即数(常数)
下列是被允许的操作数组合,但是立即操作数不能超过 32 位:
AND reg, reg
AND reg, mem
AND reg, imm
AND mem, reg
AND mem, imm
在8086CPU中 and对象不能为 mem,imm
assume cs:code,ds:data
data segment
db 'a','b','C'
code segment
start: mov ax,data
mov ds,ax
mov bx,0
mov cx,3
s: and [bx],20h
inc bx
loop s
mov ax,4c00h
int 21
code ends
end start
以二进制形式写出也可以(更直观)
7.5[bx+idata]
mov ax,[bx+200]
取长度为2字节的内存单元的内容送入ax中,因为ax是16位寄存器
不同的格式
[200+bx]
200[bx]
[bx].200
问题7.1
为什么要拆分成两段?
无需对bx进行自加1,inc bx
[bx+idata]可以用来索引数组
7.6用[bx+idata]的方式进行数组的处理
数组是在内存中连续的区域
索引方式是数组名(地址)
[bx+idata]可以用来索引数组???
进行mov,and,or等操作时最好使用通用寄存器
[0+bx]和[5+bx]在同一循环中定位这两个字符串中的字符
在这里,0和5给定了两个字符串的起始偏移地址,bx中国给出了从起始偏移地址开始的相对地址。
针对Information、BasIC的改大小写代码