我希望我的代码读取字符输入,然后将其存储在ax。
中我在功能' readInput':
中尝试了什么mov ah,0h ;get character from keyboard
int 16h ;and store it in AL
mov ah,0eh ;Display a character in AL
int 10h ;aka, echo it
mov ax, al
int 10h
我收到一条错误消息,指出它是行代码中的操作码和操作数的无效组合> mov ax,al'
所以我想首先将al存储在一个变量中。现在,通常当它不是.bss部分中的引导加载程序时,我会把num resb 1.但是引导程序中没有任何部分..?我在哪里声明这个变量,如果这是我需要做的工作呢?
我尝试使用变量进行以下操作:
mov ah, 0h
int 16h
mov ah, 0eh
int 10h
mov [num1], al
sub al, 48
int 0x10
mov ax, [num1]
int 0x10
我宣布了#num; res1 resb 1'在'完成'功能在最后,它已作为第一行返回。但是当我这样做的时候,我看到这种情况无穷无尽。
这是我的一个大小用户输入的代码,这就是为什么我试图使用ax寄存器:
call readInput
outer_loop:
mov bx, ax
inner_loop:
call dot
dec bx
cmp bx, 0
jg inner_loop
call newline
dec ax
cmp ax, 0
jne outer_loop
call newline
感谢您的帮助。
@Jester
考虑到你说的话,我觉得我已经存储了我想要的数字,所以没有必要试着把它放在斧头上。然而,这个解决方案也不起作用:
call readInput
outer_loop:
mov bx, ax
inner_loop:
call dot
dec bx
cmp bx, 0
jg inner_loop
call newline
dec ax
cmp ax, 0
jne outer_loop
call newline
readInput:
mov ah, 0h
int 16h
mov ah, 0eh
int 10h
mov ah, 0
int 10h
答案 0 :(得分:0)
答案是在方形循环中使用不同的寄存器并将键盘输入转换为整数。