assume ds:data,cs:code
data segment
db 'unIxabc'
db 'foRKxY'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,7
mov bx,0
s:
mov al,ds:[bx]
or al,00100000b
mov ds:[bx],al
//上三行可以or byte ptr ds:[bx],00100000b代替
inc bx
loop s
mov cx,6
s1:
mov al,ds:[bx]
and al,11011111b
mov ds:[bx],al
//上三行可以and byte ptr ds:[bx],11011111b代替
inc bx
loop s1
mov ax,4c00h
int 21h
code ends
end start
/*将unIxabc大写,foRKxY小写。两个知识点,
1是大写al,11011111b小写or al,00100000b,
2是mov al,ds:[bx] 和 mov ds:[bx],al 可以操作一个字节,
自己一开始写or ds:[bx],00100000b编译时报错operand must have size.
汇编中的PTR有两种作用:
1.type PTR expression
强制把expression当作指定的type来使用
2. [var] PTR type
定义var为指向类型的指针
*/
[bx+idata]:
mov ax,[bx+200]
将长度为2个字节(子单元)的内容送入ax
(ax)=((ds)*16+(bx)+200)
等价写法
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200