【发布时间】:2015-04-01 21:19:35
【问题描述】:
晚安,
我正在尝试使用程序集(FASM)做一个项目,我需要做一些三角形并将 2 种颜色从 0 到 15(向使用程序的人询问数字)
我得到这个来“读取”这些值:
mov ah, 40h
mov bx, 1
mov cx, 22
mov dx, color1msg
int 21h
mov ah, 3Fh
mov bx, 0
mov cx, 1
mov dx, color1
int 21h
mov ah, 3Fh
mov bx, 0
mov cx, 2
mov dx, crlf
int 21h
mov ah, 40h
mov bx, 1
mov cx, 1
mov dx, paragrafo
int 21h
mov ah, 40h
mov bx, 1
mov cx, 22
mov dx, color2msg
int 21h
mov ah, 3Fh
mov bx, 0
mov cx, 1
mov dx, color2
int 21h
mov ah, 3Fh
mov bx, 0
mov cx, 2
mov dx, crlf
int 21h
mov ah, 40h
mov bx, 1
mov cx, 1
mov dx, paragrafo
int 21h
sub [color1], 48
sub [color2], 48
color1msg db "Defina a cor 1 (0-9): " ;insert the color one 0-9
color2msg db "Defina a cor 2 (0-9): "
paragrafo db 10
crlf rb 2
color1 rb 2
color2 rb 2
但这只能让我从 0 读到 9,谁能帮我把这个从 0 读到 15 吗?
【问题讨论】:
-
为什么不使用 fn 0x0a 进行缓冲输入?
-
我并不担心缓冲输入,我只需要有人帮助我读取从 0 到 15 的颜色
-
从哪里读取?从文件?我以为你希望用户输入数字 0 到 15
-
是的,但是由于 ASCII 表的原因,您无法读取高于 10 的数字,您需要将它们拆分并相乘,但我不知道该怎么做..
-
使用 DOS 函数 0x0A 将用户输入读取到缓冲区。指定长度为 2 的缓冲区。然后将带数字的 ASCII 字符串转换为数字