📄 ex7_1.asm
字号:
;The first method
.model small
dis_str macro x
lea dx, x
mov ah, 09h
int 21h
endm
.data
prompt db 'Please enter the string:', '$'
;the initial value is set to '$', so as to display string
in_str db 100, ?, 100 DUP('$')
temp_str db 100 DUP('$')
result1 db 'The initial string:', '$'
result2 db 'The lowercase string:', '$'
result3 db 'The uppercase string:', '$'
result4 db 'The mutual exchanged string:', '$'
.code
.startup
mov ax, @data
mov ds, ax
dis_str prompt ;显示提示信息
call input ;调用输入字符串函数
call crlf
call crlf
dis_str result1 ;显示原始字符串
dis_str in_str+2
call crlf
call crlf
call upper_to_lower ;调用把大写字母转换为小写字母的函数
dis_str result2 ;显示转换结果
dis_str temp_str
call crlf
call crlf
call lower_to_upper ;调用把小写字母转换为大写字母的函数
dis_str result3 ;显示转换结果
dis_str temp_str
call crlf
call crlf
call mutual_convert ;调用把小写字母转换为大写字母的函数
dis_str result4 ;显示转换结果
dis_str temp_str
call crlf
call crlf
.exit 0
;------------------------------------
input proc near
push dx
push ax
lea dx, in_str
mov ah, 0ah
int 21h
pop ax
pop dx
ret
input endp
;------------------------------------------
;换行
crlf proc near
push dx
push ax
mov ah, 02h
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
pop ax
pop dx
ret
crlf endp
;-------------------------------------------
upper_to_lower proc near
push cx
push si
push bx
;set the counter
mov cl, in_str + 1
mov ch, 0
mov si, 2
again1:
;只要处理A--Z的字符
mov bl, in_str[si]
cmp bl, 'A'
jb continue1
cmp bl, 'Z'
jb to_lower1
jmp continue1
to_lower1:
add bl, 20h
continue1:
mov temp_str[si - 2], bl
inc si
loop again1
pop bx
pop si
pop cx
ret
upper_to_lower endp
;----------------------------------
lower_to_upper proc near
push cx
push si
push bx
;set the counter
mov cl, in_str + 1
mov ch, 0
mov si, 2
again2:
;只要处理a--z的字符
mov bl, in_str[si]
cmp bl, 'a'
jb continue2
cmp bl, 'z'
jb to_upper2
jmp continue2
to_upper2:
sub bl, 20h
continue2:
mov temp_str[si - 2], bl
inc si
loop again2
pop bx
pop si
pop cx
ret
lower_to_upper endp
;----------------------------------
mutual_convert proc near
push cx
push si
push bx
;set the counter
mov cl, in_str + 1
mov ch, 0
mov si, 2
again3:
mov bl, in_str[si]
cmp bl, 'A'
jb continue3
cmp bl, 'Z'
jb to_lower3
cmp bl, 'a'
jb continue3
cmp bl, 'z'
jb to_upper3
jmp continue3
to_lower3:
add bl, 20h
jmp continue3
to_upper3:
sub bl, 20h
continue3:
mov temp_str[si - 2], bl
inc si
loop again3
pop bx
pop si
pop cx
ret
mutual_convert endp
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -