用call、ret指令实现将以0结尾的c字符串转大写

assume cs:code, ss:stack

data segment
	db 'word', 0
	db 'unix', 0
	db 'wind', 0
	db 'good', 0
data ends

stack segment
dw 0,0,0,0,0,0,0,0
stack ends

code segment
start:	mov ax, stack
		mov ss, ax
		mov sp, 16
		mov ax, data
		mov ds, ax
		mov bx, 0
		
		mov cx, 4
		
	  s:push cx
		mov si, bx
		call capital
		add bx, 5
		pop cx
		loop s
		
		mov ax, 4C00H
		int 21H
		
capital:mov cl, [si]		;把ds:[si]中存的数据给cl
		mov ch, 0
		jcxz ok				;当cx为0时跳转,也就是一个字符串结尾时跳转
		and byte ptr [si], 11011111B
		inc si
		jmp short capital
	 ok:ret
code ends
end start
发布了78 篇原创文章 · 获赞 3 · 访问量 5596

猜你喜欢

转载自blog.csdn.net/qq_43071318/article/details/105426319