汇编语言,在8086系统中,给定一个字节型数组,长度为10字节:VARB DB 14, -25, 66, -17, 78, -33, 46 DB -96, 71, 80,编写一个完整的源程序,统计数组中奇数和偶数的个数,统计结果分别保存在ODDNUM和EVENNUM单元中。
时间: 2024-03-14 08:47:43 浏览: 64
一个汇编程序,计算10个0~9之间数字的总和、平均值并统计大于6的数字的个数。
5星 · 资源好评率100%
好的,以下是完整的源程序:
```
.MODEL SMALL
.STACK 100H
.DATA
VARB DB 14, -25, 66, -17, 78, -33, 46, -96, 71, 80
ODDNUM DB ?
EVENNUM DB ?
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV CX, 10 ; 数组长度
MOV SI, 0 ; 数组下标
MOV BL, 0 ; 奇数个数
MOV BH, 0 ; 偶数个数
LOOP_START:
MOV AL, VARB[SI]
INC SI
; 判断奇偶性
AND AL, 00000001B ; 判断最低位是0还是1
CMP AL, 0
JE EVEN
INC BL ; 奇数
JMP NEXT
EVEN:
INC BH ; 偶数
NEXT:
LOOP LOOP_START
; 保存结果
MOV ODDNUM, BL
MOV EVENNUM, BH
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
程序中,我们使用 `MOV AX, @DATA` 和 `MOV DS, AX` 来初始化数据段寄存器,然后使用 `MOV CX, 10` 和 `MOV SI, 0` 来设置循环计数器和数组下标。在循环中,我们使用 `MOV AL, VARB[SI]` 来取出数组中的一个元素,然后使用 AND 操作来判断其奇偶性,如果最低位为0,则说明是偶数,否则是奇数。最后,我们使用 `MOV ODDNUM, BL` 和 `MOV EVENNUM, BH` 来保存计算结果,然后使用 `INT 21H` 来结束程序。
注意,这个程序是针对8086系统的汇编语言,需要使用相应的汇编器进行编译和链接。
阅读全文