bx是偏移地址寄存器。同样的, si,di也是偏移地址寄存器。 这样使用了si,di可以更灵活的定位内存地址。
assume cs:code
code segment
start: mov bx,0
mov si,0
mov ax,ds:[si]
inc si
mov ax,ds:[bx+si]
mov di,0
mov ax,ds:[bx+di]
mov al,ds:[bx+5]
code ends
end start
assume cs:code, ds:data
data segment
db 'PYTHON'
db 'javasc'
data ends
code segment
start: mov ax,data
mov ds,ax
mov cx, 6
mov bx,0
cgeLtr: mov al,ds:[bx]
or al, 00100000B
mov dl,ds:[bx+6]
and dl,11011111B
mov ds:[bx], al
mov ds:[bx+6],dl
inc bx
loop cgeLtr
mov ax,4C00H
int 21H
code ends
end start
双层循环
assume cs:code, ds:data, ss:stack
data segment
;'0123456789abcdef'
db '1. abc '
db '2. def '
db '3. ghi '
db '4. lmn '
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax, stack
mov ss, ax
mov sp, 16
mov ax, data
mov ds, ax
mov cx,4
mov bx,0
cge: push cx
mov cx, 3
mov si,0
row: mov al, ds:[bx+si+3]
and al, 11011111B
mov ds:[bx+si+3], al
inc si
loop row
add bx,16
pop cx
loop cge
mov ax, 4C00H
int 21H
code ends
end start