每次开始内层循环的时候,将外层循环的cx中的数据保存起来,在执行外层循环的loop指令前恢复外层循环
的cx数值。一般来说,在需要暂存数据的时候,我们应该使用栈。
assume cs:code,ds:data,ss:stack
data segment
db '1. file '
db '2. edit '
db '3. sear '
db '4. view '
db '5. opti '
db '6. help '
data ends
stack segment
db '0,0,0,0,0,0,0,0' ;定义一个段,作为栈段,容量为16字节
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov si,0
mov cx,6 ; 外层循环cx的压栈值
s0:
push cx ;外层cx压栈
mov bx,3
mov cx,2 ;内层循环,修改前2个字母,改为大写
s:
mov al,[si+bx]
and al,11011111b
mov [bx+si],al
inc bx
loop s
add si,16
pop cx
loop s0
mov ah,4ch
int 21h
code ends
end start
data segment
db '1. file '
db '2. edit '
db '3. sear '
db '4. view '
db '5. opti '
db '6. help '
data ends
stack segment
db '0,0,0,0,0,0,0,0' ;定义一个段,作为栈段,容量为16字节
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov si,0
mov cx,6 ; 外层循环cx的压栈值
s0:
push cx ;外层cx压栈
mov bx,3
mov cx,2 ;内层循环,修改前2个字母,改为大写
s:
mov al,[si+bx]
and al,11011111b
mov [bx+si],al
inc bx
loop s
add si,16
pop cx
loop s0
mov ah,4ch
int 21h
code ends
end start