Use double loop to change each line of letters in the data segment to uppercase

;将数据段中每行字母改为大写
assume cs:codesg, ds:datasg, ss:stacksg

datasg segment
db 'ibm             '
db 'dec             '
db 'dos             '
db 'vax             '
dw 0					;定义一个字,用来保存cx
datasg ends

stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends

codesg segment
start:	mov ax, stacksg
		mov ss, ax
		mov sp, 16
		mov ax, datasg
		mov ds, ax
		mov bx, 0
		
		mov cx, 4
	 s0:push cx		;将外层循环的CX值压栈
		mov si, 0
		mov cx, 3	;cx设置为内层循环的次数
	  s:mov al, [bx+si]
		and al, 11011111b
		mov [bx+si], al
		inc si
		loop s
		
		add bx, 16
		pop cx
		loop s0
		
		mov ax, 4c00H
		int 21H
codesg ends
end start
;将数据段中每行前4个字母改为大写
assume cs:codesg, ds:datasg, ss:stacksg

stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
db '1. display......'
db '2. brows........'
db '3. replace......'
db '4.modify........'
datasg ends

codesg segment
start:	mov ax, stacksg
		mov ss, ax
		mov sp, 16
		mov ax, datasg
		mov ds, ax
		mov bx, 0
		
		mov cx, 4
	 s0:push cx
		mov si, 0
		mov cx, 4
	  s:mov al, [bx+3+si]
		and al, 11011111B
		mov [bx+3+si], al
		inc si
		loop s
		
		add bx, 16
		pop cx
		loop s0
		
		mov ax, 4C00H
		int 21H
codesg ends
end start
78 original articles published · Like 3 · Visits 5596

Guess you like

Origin blog.csdn.net/qq_43071318/article/details/105413950