你对寻址方式还不很了解,建议再学习一下
assume cs:code, ss:stack, ds:data
stack segment
dw 0, 0, 0, 0, 0, 0, 0, 0
stack ends
data segment
db '1. display ' ; 注意这里,每行字符一定要16个(看书上)不够的用空格填充
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax, data
mov ds, ax
mov bx, 0 ;此处不能改成mov bx, 3 ,因为bx控制着行
mov cx, 4
s0: push cx
mov si, 0
mov cx, 4
s1: mov al, [bx + si + 3] ;注意这里, 不能写成 [bx + 3 + si], 否则无法通过编译
;书上说 [bx + si + idata]
;所以应该写成 [bx + si + 3]
and al, 11011111B ;转换为大写的方法
mov [bx + si + 3], al
inc si
loop s1
add bx, 10h ;bx加16(10h)指向下一行
pop cx
loop s0
mov ax, 4c00H
int 21H
code ends
end start
|