用Masm for windows,以 DAT 开始的数据区存放 10个8 位无符号数:12,34, 63,25,76,88,93,46,74,27编程统 计其中偶数的个数,并将结果是示输出。
时间: 2024-05-05 15:21:56 浏览: 15
以下是使用 MASM for Windows 的汇编代码,可以统计给定的 10 个 8 位无符号数中的偶数个数:
```
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
numbers db 12, 34, 63, 25, 76, 88, 93, 46, 74, 27
count dw 0
.code
start:
mov esi, OFFSET numbers
mov ecx, 10
mov ax, 0
loop_start:
mov bl, [esi]
and bx, 1
cmp bx, 0
je even_number
jmp next_number
even_number:
inc ax
next_number:
inc esi
loop loop_start
mov count, ax
invoke MessageBox, NULL, addr count, addr count, MB_OK
exit:
invoke ExitProcess, NULL
end start
```
在这个程序中,我们使用了 `numbers` 和 `count` 两个数据区来存储给定的 10 个 8 位无符号数和偶数的个数。程序首先将 `esi` 寄存器设置为 `numbers` 的地址,然后使用循环遍历每个数字。对于每个数字,我们使用 `and` 指令和 `cmp` 指令来检查它是否是偶数。如果是偶数,我们将 `ax` 寄存器中的计数器加 1。最后,我们将 `ax` 寄存器中的值存储在 `count` 数据区中,并将其作为参数传递给 `MessageBox` 函数来显示结果。