- and
- 逻辑与,按位
- 应用:将操作对象的相应位设为0,其他位不变
- or
- 逻辑或(1|1 1|0 0|1 为1)
- 应用:将操作对象的相应位设为1,其他位不变
ASCII码
- 8位表示英语、字符等
- 97(61h):a 65:A 48(30h):0
汇编中用’x’代表数据以字符形式给出(db)
data segmentdb '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:stacksgstacksg segmentdw 0,0,0,0,0,0,0,0stacksg endsdatasg segmentdb 'asd 'db 'asd 'db 'asd 'db 'asd 'datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,0;行mov ax,stacksgmov ss,axmov sp,16 ;栈底!!15+1mov cx,4s0:;mov dx,cxpush cxmov si,0;列mov cx,3 ;loop只能和cx搭配,注意暂存s:mov al,[bx+si]and al,11011111hmov [bx+si],alinc siloop sadd bx,16 ;每一行16个元素;mov cx,dxpop cxloop s0 ;cx-1 ,jmpmov ax,004chint 21hcodesg endsend start
