目录
7.9 [bx+si+idata]和[bx+di+idata]
7.1 and和or指令
- and指令:逻辑与指令,按位进行与运算。
and两个同时为真的结果才为真。
mov al,01100011B
and al,00111011B ;执行后 al=00100011B
可用and指令将操作对象的相应位设为0,其他位不变
and al,10111111B ;将al第六位设为0
and al,01111111B ;将al第七位设为0
and al,11111110B ;将al第0位设为0
- or指令:逻辑或指令,按位进行或运算。
mov al,01100011B
and al,00111011B ;执行后 al=01111011B
可用or指令将操作对象的相应位设为1,其他位不变
and al,01000000B ;将al第六位设为1
and al,10000000B ;将al第七位设为1
and al,00000001B ;将al第0位设为1
7.2 关于ASCII码
7.3 以字符形式给出的数据
用‘......’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。例如’A’
assume cs:code,ds:data
data segment
db 'unIx'
db 'foRK'
data ends
code segment
start: mov al,'a'
mov bl,'b'
mov ax,4c00h
int 21h
code ends
end start
7.4 大小写转换的问题
大写字母比小写字母ASCII大32(20H)
大写字母ASCII码第五位为0,小写字母ASCII码第五位为1。
大写 |
二进制 |
小写 |
二进制 |
A |
01000001 |
a |
01100001 |
B |
01000010 |
b |
01100010 |
C |
01000011 |
c |
01100011 |
D |
01000100 |
d |
01100100 |
大小写转换
assume cs:codesg,ds:datasg
datasg segment
db 'BaSiC'
db 'iNfOfMaTiOn'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax ;设置ds指向datasg段
mov bx,0 ;设置(bx)=0,ds:bx指向'BaSiC'的第一个字母
mov cx,5 ;设置循环次数5,因为‘