為什么得不到想要的結果

Arlung 2006-11-22 12:11:21
本人學習(匯編語言 程序設計<第二版>)有以下的習題﹕

從鍵盤輸入一個字符串(10個字符內)﹐將其中的小寫字母轉成大寫字母﹐然后輸出到屏幕上。

問題﹕程序編譯執行時﹐結果會這樣﹕
a. 用戶輸入﹕1234
屏幕顯示﹕
b. 用戶輸入﹕12345
屏幕顯示﹕ 5
c. 用戶輸入﹕123456
屏幕顯示﹕ 456
...
d. 用戶輸入﹕123456789
屏幕顯示﹕123456789


.model small
.stack
.data

buf db 0ah, 0h, 0ah dup(20h), '$' ;20h => Space
.code
.startup

mov ah, 0ah
mov dx, offset buf
int 21h

mov cx, 0
mov cl, [buf + 01h]
mov si, 2

next: mov al, [buf + si]
cmp al, 'a'
jc savebuf
cmp al, 'z'
jnc savebuf
sub al, 020h

savebuf: mov [buf + si], al
inc si
loop next
mov [buf], 0dh
mov [buf + 01h], 0ah
mov dx, offset buf
mov ah, 09h
int 21h

.exit 0
end
...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2006-11-22
  • 打赏
  • 举报
回复
应该是输入时键入的回车键在 buf 中的干扰吧, 因为要输出到最后的 '$' 才结束.
试试在 loop next 指令的后面加上 mov byte ptr [buf+si], '$' 这样可以输出到有效字符为止, 不包括了最后的那个回车即其它的空白数据

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧