- and指令: 逻辑与指令,按位进行 与 运算
or 指令:逻辑或指令,按位进行 或 运算
mov al,01100011B
and al,00111011B // al=00100011B
mov al,01100011B
or al,00111011B // al=01111011B
dw 指令 : 以字形式给出数据
db 指令: 以字符形式给出数据大小写转换:
大写转换:ASCII 码的第五位置 0,即与 11011111B 做 与(and)操作
小写转换:ASCII 码的第五位置 1,即与 00100000B 做 或(or)操作[bx + idata]
// (ax) = ( (ds)*16 + (bx) + 200 )
mov ax,200[bx]
mov ax,[bx].200
mov ax,[bx+200]
- SI && DI
SI DI 是 8086CPU中和 bx 功能相近的寄存器, si di 不能够分成两个8位寄存器来使用。
6.[bx+si+idata] && [bx+di+idata]
// (ax) = ( (ds)*16 + (bx) + (si) + 200 )
mov ax,[bx+si+200]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
- 一般来说,在需要暂存数据的时候,都应该使用栈。
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db 'display '
db 'brows '
db 'replace '
db 'modify '
datasg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: push cx
mov si,0
mov cx,5
s1: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s1
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start