《微机原理》【汇编程序】数据段array单元开始有50个符号数的字节数

来源:百度知道 编辑:UC知道 时间:2024/05/26 10:30:50
数据段array单元开始有50个符号数的字节数,要求统计其中负数的个数并按二进制的形式显示出来,写出实现该功能的汇编程序(要求完整的汇编程序结构)
采纳者追加200分

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
array db 23,-69,0,35,-46,57,-68,79,-89,-81,98,-43,56,-41,123,-98,102,-87,31
db -65,58,67,-25,-100,20,-26,79,-81,51,-37,-91,-63,19,-85,-62,39,-48,69
db -123,0,17,126,-111,-98,-81,-76,26,73,-75,-83
Elements equ ($-array)/Type array ;元素个数
Prompt_Str db 'Numbers of the negatives: $' ;负数个数提示信息
Start: push cs
pop ds
xor bl,bl ;计数器置0
cld
lea si,array ;取数据地址
mov cx,Elements ;元素个数
Statics: test byte ptr [si],80h ;是否负数?
jz $+4 ;不是
inc bl ;是,负数计数
inc si ;si增1,判断下一个元素
loop Statics
lea dx,Prompt_Str
mov ah,9
int 21h
clc ;清进位标志
mov cx,8 ;循环左移次数
mov ah,2
Left_Move: shl bl,1
mov dl,'1' ;
jc $+4 ;若CF=1,直接显示字符'1'
mov dl,'0' ;若CF=0,修改显示字符为'0'
int 21h ;显示一个字符
loop Left_Mov