汇编实现二重循环有3种方法:
1.使用寄存器存储CX
;将data段中的每个单词改为大写字母 assume cs:code,ds:data data segment db 'ibm ';可看作4行1列的二维数组 db 'dec ' db 'dos ' db 'vax ' data ends code segment start: mov ax,data mov ds,ax mov cx,4 mov bx,0 s: mov dx,cx ;用寄存器存储cx mov si,0 mov cx,3 s1: mov al,[bx+si] and al,11011111b mov [bx+si],al inc si loop s1 add bx,16 mov cx,dx ;恢复外循环的cx loop s mov ax,4c00h int 21h code ends end start
2.使用内存单元存储CX
;将data段中的每个单词改为大写字母 assume cs:code,ds:data data segment db 'ibm ';可看作4行1列的二维数组 db 'dec ' db 'dos ' db 'vax ' dw 0 data ends code segment start: mov ax,data mov ds,ax mov cx,4 mov bx,0 s: mov ds:[40h],cx mov si,0 mov cx,3 s1: mov al,[bx+si] and al,11011111b mov [bx+si],al inc si loop s1 add bx,16 mov cx,ds:[40h] loop s mov ax,4c00h int 21h code ends end start
3.使用栈段存储CX
;将data段中的每个单词改为大写字母 assume cs:code,ds:data data segment db 'ibm ';可看作4行1列的二维数组 db 'dec ' db 'dos ' db 'vax ' data ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start: mov ax,data mov ds,ax mov cx,4 mov bx,0 s: push cx mov si,0 mov cx,3 s1: mov al,[bx+si] and al,11011111b mov [bx+si],al inc si loop s1 add bx,16 pop cx loop s mov ax,4c00h int 21h code ends end start