基址寻址
- 使用BX/BP做偏移地址的寻址方式
- 使用BX做偏移地址 默认使用DS寄存器做段寄存器 物理地址 = ds << 4 + bx
- 使用BP做偏移地址 默认使用SS寄存器做寄存器 物理地址 = ss << 4 + bp
功能: 给每一个数加1
buffer dw 0x20,0x100,0x0f
mov bx, buffer
mov cx, 3
addone:
inc word[bx]
add bx, 2
loop addone
基址加变址寻址
同时使用BX/BP和SI/DI方式寻址
mov ax, [bx+si+0x03] ---> 物理地址 = ds << 4 + bx + si + 0x03
mov ax, [bp+di+0x03] ---> 物理地址 = ss << 4 + bp + di + 0x03
反转字符串
源字符串 ABCDEFGH
目标字符串 HGCEDFBA
jmp start
message db 'ABCDEFGH'
start:
mov ax, 0x07c0
mov ds, ax
mov ax, 0xb800
mov es, ax
mov bx, message
mov si, 0
mov di, start-message-1
reverse:
mov ah, [bx+si]
mov al, [bx+di]
mov [bx+si], al
mov [bx+di], ah
inc si
dec di
cmp si, di
jl reverse
mov si, message
xor di, di
mov cx, start-message
print:
mov al, [si]
mov [es:di], al
inc di
mov byte [es:di], 0x07
inc di
inc si
loop print
jmp $
times 510-($-$$) db 0
db 0x55, 0xaa