第1个回答 2013-07-25
assume cs:code, ds:datas
datas segment
str db 100 dup(?)
datas ends
code segment
start:
mov ax, datas ;初始化段
mov ds, ax
lea si, str ;载入str存储位置
mov ah, 1 ;1号功能调用输入字符
next:
int 21h
cmp al, 13 ;回车结束输入
jz done
cmp al, 'a' ;对字符范围'a'~'z'进行转换
jl noop
cmp al, 'z'
jg noop
sub al, 20h ;转为对应大写形式
noop:
mov [si], al ;存储
inc si ;更新位置
jmp next
done:
mov ah, 2 ;以下5句输出一个换行
mov dl, 13
int 21h
mov dl, 10
int 21h
mov byte ptr [si], '$' ; 设置结束标志
mov ah, 9 ;9号功能输出ds:dx的字符串
lea dx, str
int 21h
mov ax, 4c00h ;程序结束
int 21h
code ends
end start
附图:
第2个回答 推荐于2017-05-16
额。楼上的已经写的很好了。他是字符串的。我写个单个字符的转换吧。
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AH,1
INT 21H
SUB AL,32
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START本回答被网友采纳