assembly - 无法读取超过 200 个字符
问题描述
我必须从键盘上读取 10 个数字,然后找到最小值和最大值。它适用于 0-200 之间的值,但如果我输入“232,102,1,2,3,4,5,6,7,8”,代码只会说 232 是最低的,102 是最大的。
我
.model small
.stack 200h
.data
max db 0
min db 0
numar db 0
mesaj_min db 13,10, 'Minimul este: $'
mesaj_max db 13,10, 'Maximul este: $'
.code
programStart:
mov ax,@data
mov ds,ax
xor cx,cx
xor bx,bx
mov dl, 10
mov cx, 10
start:
readNumber:
xor ax,ax
mov ah, 01h
int 21h
cmp al, 13
je incarca_stiva
mov bl, al
sub bl, 30h
mov al, numar
mul dl
add al, bl
mov numar, al
jmp readNumber
incarca_stiva:
xor ax,ax
mov al,numar
push ax
mov numar,0
loop start
val_initiala:
xor ax,ax
pop ax
mov min,al
mov max,al
mov cx,9
comparatie:
pop ax
cmp min,al
jge minim
cmp max,al
jle maxim
jmp repetare
minim:
mov min,al
jmp repetare
maxim:
mov max,al
jmp repetare
repetare:
loop comparatie
xor cx, cx
xor bx,bx
Descompunere_max:
xor ax, ax
mov al, max
mov dl, 10
div dl
mov max, al
mov bl, al
add ah, 30h
mov al, ah
mov ah, 0
push ax
inc cx
mov al, bl
cmp al, 0
je AfisareMesaj
jmp Descompunere_max
AfisareMesaj:
mov ah,09H
mov dx, offset mesaj_max
int 21H
AfisareMax:
pop ax
mov ah, 02h
mov dl, al
int 21h
loop AfisareMax
xor cx, cx
xor bx,bx
Descompunere_min:
xor ax, ax
mov al, min
mov dl, 10
div dl
mov min, al
mov bl, al
add ah, 30h
mov al, ah
mov ah, 0
push ax
inc cx
mov al, bl
cmp al, 0
je AfisareMesajMin
jmp Descompunere_min
AfisareMesajMin:
mov ah,09H
mov dx, offset mesaj_min
int 21H
AfisareMin:
pop ax
mov ah, 02h
mov dl, al
int 21h
loop AfisareMin
SfarsitProgram:
mov ah, 4ch
int 21h
end programStart
结果应该是:“Maximul este:232”“Minimul este:1”
有人可以向我解释问题是什么吗?
解决方案
推荐阅读
- bash - .zshrc 或 .bash_profile 的代码,将 jupyter notebook Alias 设置为在终端中键入快捷方式 jn
- javascript - 对象旋转点击JS
- docker - 工匠迁移码头工人错误
- angular - Firebase 应用程序部署
- delphi - Delphi - 使用非管理员应用程序写入文件适用于管理员用户但不适用于非管理员用户
- jquery - Handlebars JS:将变量从 Handlebars.compile() 传递给脚本
- amazon-s3 - 持续部署不起作用
- html - 扩展 flexbox 容器不按下下面的 div
- python - Tensorflow 1.8 GPU版本在windows上似乎没有使用GPU
- chatbot - 从完整的句子中自动生成意图和实体