8086汇编语言键盘数据的输入、处理、输出
时间: 2023-04-10 07:04:28 浏览: 551
8086汇编语言中,键盘数据的输入可以通过INT 16h中断来实现,处理可以通过检查键盘缓冲区中的数据并将其存储到内存中,输出可以通过将数据发送到显示器来实现。具体实现方式可以参考相关的汇编语言教程和手册。
相关问题
8086汇编语言键盘输入10个数将ascii码放入string
好的,您的问题是关于8086汇编语言的。如果您想要实现键盘输入10个数,并将它们的ASCII码存放在一个字符串中,可以使用如下的汇编代码实现:
```
DATA_SEG SEGMENT
inputMsg db 'Please enter a number: $'
outputMsg db 'ASCII codes: $'
num db 10 ; 数字的个数
asciiString db 20 ; 存放ASCII码的字符串
input db 2 ; 存放输入的数字
DATA_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG, DS:DATA_SEG
START:
; 初始化数据段寄存器
mov ax, DATA_SEG
mov ds, ax
; 输出提示信息
mov ah, 9h
lea dx, inputMsg
int 21h
; 循环10次,读取输入的数字并计算其ASCII码
mov si, 0 ; si 存放字符串偏移量
mov cx, num
loopStart:
; 读取输入的数字
mov ah, 1h
int 21h
; 将输入的数字转换成ASCII码并存放在字符串中
add al, 30h ; 将数字转换成ASCII码
mov byte ptr asciiString[si], al
inc si
; 输出空格
mov ah, 2h
mov dl, ' '
int 21h
loop loopStart
; 输出ASCII码字符串
mov ah, 9h
lea dx, outputMsg
int 21h
mov ah, 9h
lea dx, asciiString
int 21h
; 退出程序
mov ah, 4ch
int 21h
CODE_SEG ENDS
```
这个程序首先定义了一些数据,包括提示信息、数字的个数、ASCII码字符串等,然后使用一个循环读取并计算10个数字的ASCII码,将它们依次存放在一个字符串中,最后输出这个字符串。您可以将这个程序保存在一个文件中,然后使用汇编器将其编译成可执行文件。
用8086汇编语言实现从键盘输入5个数求平均值
好的,下面是用8086汇编语言实现从键盘输入5个数求平均值的程序:
```assembly
.MODEL SMALL
.STACK 100H
.DATA
COUNT DB 5 ; 用于控制循环次数的计数器
SUM DW 0 ; 用于存储输入的5个数的总和
AVG DW 0 ; 用于存储计算出的平均值
PROMPT DB '请输入第$个数:$' ; 提示语句
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
MOV CX, COUNT ; 初始化计数器
MOV BX, 0 ; 初始化偏移量
; 循环读取输入的5个数
INPUT_LOOP:
INC BX
MOV DL, BL
ADD DL, '0'
MOV AH, 09H
MOV DX, OFFSET PROMPT
INT 21H
MOV AH, 01H
INT 21H
SUB AL, '0'
MOV AH, 0
MOV DL, 0AH
MOV DH, 00H
DIV DL
ADD SUM, AX
LOOP INPUT_LOOP
; 计算平均值并输出
MOV AX, SUM
MOV BX, COUNT
MOV DX, 0
DIV BX
MOV AVG, AX
MOV AX, AVG
CALL PRINT_NUM
MOV AH, 4CH ; 程序结束
INT 21H
MAIN ENDP
; 打印数字子程序
PRINT_NUM PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX, 0 ; 初始化计数器
MOV BX, 10 ; 除数
; 计算位数
CALC_DIGIT:
INC CX
DIV BX
TEST AX, AX
JZ PRINT_LOOP
JMP CALC_DIGIT
; 打印数字
PRINT_LOOP:
XOR AH, AH
MOV DL, 0AH
DIV DL
ADD AX, '0'
PUSH AX
INC CX
TEST DX, DX
JZ PRINT_NUM
JMP PRINT_LOOP
; 输出数字
PRINT_NUM:
POP DX
MOV BX, 0 ; 初始化偏移量
MOV CX, 0 ; 初始化计数器
CMP AX, 0
JGE POSITIVE_NUM
NEG AX
MOV AH, 02H
MOV DL, '-'
INT 21H
POSITIVE_NUM:
CALL PRINT_NUM
POP DX
POP CX
POP BX
POP AX
RET
PRINT_NUM ENDP
END MAIN
```
这个程序的思路很简单,就是通过循环读取5个数并累加求和,最后再除以5计算平均值并输出。在读取每个数的时候,使用了一个字符串模板来输出提示语句,并根据计数器的值自动填充提示语句中的“$”符号。在输出数字的时候,使用了一个子程序来计算数字的位数并逐位输出。