汇编学习笔记--标志寄存器

时间:2022-08-01 01:01:25

实例:将以0结束的字符串中的小写字母转变成大写字母

assume cs:code,ds:data

data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0 ;双引号??
data ends

;将以0结束的字符串中的小写字母转变成大写字母
;参数:ds:si指向字符串首地址
code segment
start: mov ax,data
mov ds,ax
mov si,0
call letterc

mov ax,4c00h
int 21h

letterc: push ax ;寄存器入栈

s: mov al,[si] ;从内存中读取字符

cmp al,0
je ok ;若为0则结束子程序

cmp al,61h
jb next ;若小于a,则next
cmp al,7ah
ja next ;若大于z,则next

sub al,20h
mov [si],al ;将小写字母减20h,变为大写写到内存中

next: inc si
jmp short s ;读取下一个字符

ok: pop ax ;寄存器出栈
ret

code ends
end start