一、and和or指令:
1、and指令:
逻辑与指令,按位进行与运算
如:mov al,01100011B
and al,00111011B
结果 : al=00100011B
2、or指令:
逻辑或指令,按位进行或运算
如:mov al,01100011B
or al,00111011B
结果 : al=01111011B
二、ASCII码:
ASCII 是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646
三、以字符形式给出的数据:
assume cs:code,ds:data
data segment
db 'unIX'
db 'foRK'
data end
code segment
start:mov al,'a'
mov bl,'b'
mov ax,4c00H
int 21H
code ends
end start
1、db ‘unIX’:
相当于”db 75H,6EH,49F,58H”,”u”、”n”、”I”、”X”的ASCII码分别是75H,6EH、49H、58H
四、[dx+idata]:
[dx+idata]表示一个内存单元,它的偏移地址为(bx)+ idata (bx中的数值加上idata)
mov ax,[bx+200]可以写成:mov ax,[200+bx]、mov ax,200[bx]、mov ax,[bx].200
五、SI和DI:
1、SI和DI是8086CPU中和bx功能相近的寄存器,但是SI和DI不能分成两个8位寄存器来使用
2、以下三组指令实现相同的功能:
①、mov bx,0
mov ax,[bx]
②、mov si,0
mov ax,[si]
③、mov di,0
mov ax,[di]
3、以下三组指令实现相同的功能:
①、mov bx,0
mov ax,[bx+123]
②、mov si,0
mov ax,[si+123]
③、mov di,0
mov ax,[di+123]
4、[bx+si]:表示一个内存单元,它的偏移地址为(bx)+(si),即bx中的数值加上si中的数值
5、mov ax,[bx+si]:表示将一个内存单元的内容送入ax,这个内存单元的长度为2字节
6、mov ax,[bx+200+si]可以写成以下形式:
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
注:数字在后要加”.”
,,
五、不同的寻址方式:
1、[iata]:用一个常量表示地址,可用于直接定位一个内存单元
2、[bx]:用一个变量表示内存地址,可用于间接定位一个内存单元
3、[bx+idata]:用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元
4、[bx+si]:用两个变量表示内存地址
5、[bx+si+idata]:用两个变量和常量表示地址