汇编语言 从键盘输入3~9之间的数字,用“*”和“#”号组成一个三角形图案,如输入数字7,屏幕上应显示出以下图案。
时间: 2023-05-30 19:01:13 浏览: 236
”号打印出来。
首先,需要使用中断来读取键盘输入的数字。然后,判断输入的数字是否在3~9之间,如果是,则打印相应数量的“*”和“ ”号,如果不是,则提示重新输入。具体的代码实现可以参考下面的示例:
```
section .data
msg db 'Please enter a number between 3 and 9:', 0
err_msg db 'Invalid input, please try again:', 0
star db '*'
space db ' '
section .bss
num resb 1
section .text
global _start
_start:
; print message to prompt user input
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 34
int 0x80
; read input from keyboard
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 1
int 0x80
; check if input is between 3 and 9
cmp byte [num], 0x33
jl invalid_input
cmp byte [num], 0x39
jg invalid_input
; print stars and spaces
mov eax, 4
mov ebx, 1
mov ecx, space
mov edx, 1
sub byte [num], 0x30
mov esi, 0
print_star:
cmp esi, [num]
jge end_print
mov eax, 4
mov ebx, 1
mov ecx, star
mov edx, 1
int 0x80
inc esi
jmp print_space
print_space:
mov eax, 4
mov ebx, 1
mov ecx, space
mov edx, 1
int 0x80
jmp print_star
end_print:
; exit program
mov eax, 1
xor ebx, ebx
int 0x80
invalid_input:
; print error message and prompt for re-entering
mov eax, 4
mov ebx, 1
mov ecx, err_msg
mov edx, 31
int 0x80
jmp _start
```
这段代码首先从键盘读取一个字符,然后判断该字符是否在3~9之间,如果是,则打印相应数量的“*”和“ ”号,如果不是,则提示重新输入。需要注意的是,在打印“*”和“ ”号时,使用了一个循环来实现。
阅读全文