更灵活的定位内存地址的方法
- and和or指令
- and指令: 逻辑与指令、按位进行与运算。
Example:
mov al, 01100011B
and al, 00111011B
执行后: al = 0010001B
通过该指令可将操作对象的响应为设为0,其他不变。 - or指令:逻辑或指令,按位进行或运算。
Example:
mov al, 01100011B
or al, 00111011B
执行后: al = 01111011B
通过该指令可以将操作对象的相应位设为1,其他位不变
关于ASC||码
键盘'a'
→内存61H
→显存(软件从内存中取出数据,并送到显存)61H
→工作在文本模式下的显卡,用ASC||解释显存中的内容'a'
→显卡驱动显示器'a'
以字符形式给出的数据
关键词db
可以定开辟一或多字节空间
db 61H ;定义了一个字节型数据
db 'unIX' ;相当于 `db 75H, 6EH, 49H, 58H`,定义了四个字节型数据
- 大小写转换
一个字符转换为小写:
mov al, [bx] ;[bx]为将要转换的内存单元
or al, 00100000B
mov [bx], al
一个字符转换为大写:
mov al, [bx] ;[bx]为将要转换的内存单元
and al, 11011111B
mov [bx], al
- 不同的寻址方式
[bx]、 [si]、[di]
[bx+idata]、[si+idata]、[di+idata]
[bx+si]、[bx+di]
[bx+si+idata]、[bx+di+idata]
其中: idata[bx]可以理解将idata为数组地址,[bx]为下标
- 注意地方
- SI和DI不能够分成两个8为寄存器来使用:
- 程序刚开始时(ds尚未被赋值时),源程序中第一个段的段地址为:ds+10H;
- 一般来说,在需要暂存数据的时候,我们都应该使用栈;