- and
- 逻辑与,按位
- 应用:将操作对象的相应位设为0,其他位不变
- or
- 逻辑或(1|1 1|0 0|1 为1)
- 应用:将操作对象的相应位设为1,其他位不变
ASCII码
- 8位表示英语、字符等
- 97(61h):a 65:A 48(30h):0
汇编中用’x’代表数据以字符形式给出(db)
data segment
db 'unIX'
db 'foRK'
data ends
大小写规律
- 小写-32=大写
- A:0100 0001
- a:0110 0001
- and al,11011111h;大写转小写
- or al,00100000h;小写转大写
[bx+idata]
- 偏移地址为(bx)+idata
- 用该方式表示数组
- [bx+0] = [0+bx] = 0[bx] = [bx].5
si和di
- 和bx功能相近,但是不能分成8位寄存器
- 循环里常用来替代、数据复制
- ds:si指向要复制的原字符串 (or ds:[bx+si])
- ds:di指向复制的目的空间 (or ds:[bx+di])
- [bx+si+idata]
- [bx+di+idata]
- 不同寻址方式的灵活应用
- [idata]:直接定位一个内存单元
- [bx]:间接定位内存单元
- [bx+idata]:在一个起始地址的基础上
- [bx+si]
- [bx+si+idata]
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db 'asd '
db 'asd '
db 'asd '
db 'asd '
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
mov bx,0;行
mov ax,stacksg
mov ss,ax
mov sp,16 ;栈底!!15+1
mov cx,4
s0:;mov dx,cx
push cx
mov si,0;列
mov cx,3 ;loop只能和cx搭配,注意暂存
s:mov al,[bx+si]
and al,11011111h
mov [bx+si],al
inc si
loop s
add bx,16 ;每一行16个元素
;mov cx,dx
pop cx
loop s0 ;cx-1 ,jmp
mov ax,004ch
int 21h
codesg ends
end start