用汇编语言从键盘输入3~9之间的数字,用“*”和“#”号组成一个三角形图案,如输入数字7,屏幕上应显示出以下图案。 ******* ###### ***** #### *** ##
时间: 2023-05-27 19:08:03 浏览: 270
用汇编语言编三角形,然后在屏幕上显示出来
3星 · 编辑精心推荐
# 首先定义相关常量
SCANCODE_3 equ 0x03
SCANCODE_4 equ 0x04
SCANCODE_5 equ 0x05
SCANCODE_6 equ 0x06
SCANCODE_7 equ 0x07
SCANCODE_8 equ 0x08
SCANCODE_9 equ 0x09
SCANCODE_ASTERISK equ 0x2A
SCANCODE_SLASH equ 0x2F
section .data
section .bss
; 定义缓冲区,用于存储键盘输入的数据
buffer resb 1
section .text
; 从键盘读取一个字节
read_byte:
mov ah, 0x00 ; 设置中断号
int 0x16 ; 调用中断
ret
; 输出一个字符
print_char:
mov ah, 0x0e ; 设置中断号
int 0x10 ; 调用中断
ret
global _start
_start:
; 读取一个字节,存储到buffer中
call read_byte
; 判断输入的是否是3-9之间的数字
cmp byte[buffer], SCANCODE_3
jb invalid_input
cmp byte[buffer], SCANCODE_9
ja invalid_input
; 如果输入的是数字,则输出对应的星号
mov al, byte[buffer]
sub al, SCANCODE_3 ; 将输入的数字转换为0-6之间的索引
mov bl, al ; 将索引存储到bl寄存器中
add bl, SCANCODE_ASTERISK ; 计算对应的星号的ASCII码
call print_char
; 输出一个斜线
mov al, SCANCODE_SLASH
call print_char
; 程序正常结束
jmp end_program
invalid_input:
; 如果输入的是非法字符,则输出提示信息
mov ah, 0x0e ; 设置中断号
mov al, 'I' ; 输出"I"
int 0x10 ; 调用中断
mov al, 'n' ; 输出"n"
int 0x10 ; 调用中断
mov al, 'v' ; 输出"v"
int 0x10 ; 调用中断
mov al, 'a' ; 输出"a"
int 0x10 ; 调用中断
mov al, 'l' ; 输出"l"
int 0x10 ; 调用中断
mov al, 'i' ; 输出"i"
int 0x10 ; 调用中断
mov al, 'd' ; 输出"d"
int 0x10 ; 调用中断
jmp end_program
end_program:
; 程序结束
mov ah, 0x4c ; 设置中断号
xor al, al ; 设置返回值为0
int 0x21 ; 调用中断
阅读全文