用汇编程序实现从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并在屏幕上显示出来。
时间: 2023-12-18 12:05:37 浏览: 198
键盘录入数据的转换与显示.rar_1-wire_4位二进制数
以下是汇编程序实现从键盘输入10个无符号十进制数,转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并在屏幕上显示出来的代码:
```assembly
.model small
.stack 100h
.data
NUM db 10 dup(0) ; 存放二进制数的数组
MAX db 0 ; 最大数
.code
main proc
mov ax, @data
mov ds, ax
; 从键盘输入10个无符号十进制数,转换为二进制数并存放在NUM数组中
mov cx, 10
input_loop:
call input_decimal ; 从键盘输入一个十进制数,存放在AL中
call decimal_to_binary ; 将AL中的十进制数转换为二进制数,存放在NUM数组中
inc si ; 数组指针加1
loop input_loop
; 找出最大的二进制数
mov si, offset NUM ; 数组指针指向第一个元素
mov al, [si] ; 取出第一个元素
mov MAX, al
mov cx, 9
max_loop:
inc si ; 数组指针加1
mov al, [si] ; 取出下一个元素
cmp al, MAX ; 比较是否大于最大数
jna max_next ; 如果不大于最大数,跳过
mov MAX, al ; 更新最大数
max_next:
loop max_loop
; 显示最大的二进制数
mov ah, 2
mov dl, MAX
add dl, 30h ; 转换为ASCII码
int 21h
mov ah, 4ch
int 21h
main endp
; 从键盘输入一个十进制数,存放在AL中
input_decimal proc
mov ah, 1
int 21h
sub al, 30h ; 转换为数字
ret
input_decimal endp
; 将AL中的十进制数转换为二进制数,存放在NUM数组中
decimal_to_binary proc
mov cl, 8 ; 8位二进制数
d2b_loop:
rcr al, 1 ; 右移1位,将最低位存入CF中
mov [si], 0 ; 先清零
jnc d2b_skip ; 如果CF为0,跳过
mov [si], 1 ; 如果CF为1,将NUM数组中的相应位设为1
d2b_skip:
inc si ; 数组指针加1
loop d2b_loop
ret
decimal_to_binary endp
end main
```
注意:以上程序是基于8086 CPU的汇编程序,需要在DOS环境下运行。如果在其它环境下运行,可能需要进行修改。
阅读全文