汇编语言编程设计输出九九乘法表,从键盘输入选项,查找对应结果并标记输出,数据的
时间: 2024-03-20 13:43:51 浏览: 32
存储可以使用数据段。
以下是一个示例程序:
```assembly
.model small
.stack 100h
.data
prompt1 db 'Enter 1 to print multiplication table, 2 to search for a result: $'
prompt2 db 'Enter a number between 1 and 9: $'
prompt3 db 'Enter a product to search for: $'
result db 'Found!', 13, 10, '$'
notfound db 'Not found!', 13, 10, '$'
table db 81 dup(?)
newline db 13, 10, '$'
.code
mov ax, @data
mov ds, ax
; print prompt
mov ah, 09h
lea dx, prompt1
int 21h
; read input
mov ah, 01h
int 21h
sub al, '0'
; handle input
cmp al, 1
je print_table
cmp al, 2
je search_result
jmp exit_program
print_table:
; print prompt
mov ah, 09h
lea dx, prompt2
int 21h
; read input
mov ah, 01h
int 21h
sub al, '0'
; validate input
cmp al, 1
jb invalid_input
cmp al, 9
ja invalid_input
; initialize multiplication table
mov bl, al
mov cl, 1
mov di, 0
init_table:
mov al, bl
mul cl
mov table[di], al
inc di
inc cl
cmp cl, 10
jne init_table
; print multiplication table
mov di, 0
print_table_loop:
mov ah, 02h
mov dl, bl
int 21h
mov ah, 02h
mov dl, 'x'
int 21h
mov ah, 02h
mov dl, di + 1
int 21h
mov ah, 02h
mov dl, '='
int 21h
mov ah, 02h
mov dl, table[di]
add dl, '0'
int 21h
mov ah, 09h
lea dx, newline
int 21h
inc di
cmp di, 9
jle print_table_loop
jmp exit_program
search_result:
; print prompt
mov ah, 09h
lea dx, prompt3
int 21h
; read product to search for
mov ah, 01h
int 21h
sub al, '0'
; validate input
cmp al, 1
jb invalid_input
cmp al, 81
ja invalid_input
; search for product
mov bl, al
mov di, 0
search_loop:
cmp table[di], bl
je found_result
inc di
cmp di, 81
jle search_loop
; product not found
mov ah, 09h
lea dx, notfound
int 21h
jmp exit_program
found_result:
; print result and mark it in table
mov ah, 09h
lea dx, result
int 21h
mov ah, 02h
mov dl, di / 9 + 1
int 21h
mov ah, 02h
mov dl, 'x'
int 21h
mov ah, 02h
mov dl, di % 9 + 1
int 21h
mov ah, 02h
mov dl, '='
int 21h
mov ah, 02h
mov dl, bl
add dl, '0'
int 21h
mov table[di], '!'
jmp exit_program
invalid_input:
; print error message
mov ah, 09h
lea dx, newline
int 21h
mov ah, 09h
lea dx, notfound
int 21h
jmp exit_program
exit_program:
mov ah, 4ch
int 21h
end
```
该程序包含三个部分:
1. 打印提示信息并读取用户输入。
2. 执行选定操作。
3. 退出程序。
如果用户输入“1”,则打印第一个提示信息并读取用户输入。程序将验证输入是否为1到9之间的数字,并初始化乘法表。然后,程序将打印乘法表,标记结果为“!”。
如果用户输入“2”,则打印第二个提示信息并读取用户输入。程序将验证输入是否为1到81之间的数字,并搜索乘法表。如果找到结果,则将其标记为“!”。
在两种情况下,如果用户输入无效,则打印错误消息。
请注意,该程序使用一个名为“table”的字节数组来存储乘法表和标记结果。该数组有81个元素,每个元素可以存储一个数字或一个字符(“!”)。由于该程序使用8086汇编语言,因此可以使用16位寄存器来计算数组索引。