|
发表于 2015-12-25 00:51:46
|
显示全部楼层
你对寻址方式还不很了解,建议再学习一下
- 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
复制代码 |
|