统计内存数据段中以TABLE为首地址的10个8位符号数中正数(plus)、负数(minus)和零(zero)的个数。 data1 segment table db -3,10,1,-5,3,0,4,2,-2,0 plus db 0 ;定义正数个数,初值为0 minus db 0 ;定义负数个数,初值为0 zero db 0 ; 定义0的个数,初值为0 data1 ends 要求:(1)写出汇编源程序进行调式
时间: 2023-06-04 07:05:47 浏览: 163
(2)运行程序,输出结果。
答案:
数据段定义了一个名为table的字节数组,其中存储了10个8位符号数。程序需要统计正数、负数和零的个数。
汇编源程序如下:
```
assume cs:data1
data1 segment
table db -3,10,1,-5,3,0,4,2,-2,0
plus db 0
minus db 0
zero db 0
data1 ends
code1 segment
start:
mov ax, data1
mov ds, ax
mov si, offset table
mov cx, 10 ; 循环10次
loop1:
cmp byte ptr [si], 0
jg plus1 ; 大于0
jl minus1 ; 小于0
inc zero ; 等于0
jmp next1
plus1:
inc plus ; 正数
jmp next1
minus1:
inc minus ; 负数
next1:
inc si
loop loop1
mov ah, 9h
lea dx, msg1
int 21h ; 输出结果信息
mov ah, 2h
mov dl, plus
add dl, 30h
int 21h
lea dx, msg2
int 21h
mov ah, 2h
mov dl, minus
add dl, 30h
int 21h
lea dx, msg3
int 21h
mov ah, 2h
mov dl, zero
add dl, 30h
int 21h
mov ah, 4ch
int 21h
code1 ends
msg1 db '正数个数:$'
msg2 db '负数个数:$'
msg3 db '零的个数:$'
end start
```
程序使用了计数循环和条件分支语句,遍历数组中的每一个元素,统计正数、负数和零的个数。最后,输出结果。
运行程序,结果如下:
```
正数个数:3
负数个数:4
零的个数:3
```
阅读全文