VHDL
请编写一个程序,统计负数的个数,并求最大数和最小数。
设数据段有8个有符号数:
NUM DB -19,+28,37,-46,+55,61,-74,-55
;FILENAME :44.ASM
.586
DATA SEGMENT USE16
NUM DB -19,-28,37,-46,+55,+61,-74,-55
MEG1 DB 'The number of negative numbers is:',?,0DH, 0AH,'$'
MEG2 DB 0AH,'MAX=',?,0DH, 0AH,'$'
MEG3 DB 0AH,'MIN=',?,0DH, 0AH,'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME DS:DATA,CS:CODE
BEG: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET NUM
MOV CX,8
MOV DL,0
MOV BL,0
LAST: CMP BYTE PTR[SI],0
JG NEXT
INC DL;小于0的数比大小
CMP BYTE PTR[SI],BL;小于0的数存在BL寄存器中
JLE MINFIND
NEXT: CMP BYTE PTR[SI],BH;当大于0时比较大小,存在BH寄存器中
JG MAXFIND
INC SI
LOOP LAST
;ADD DL,30H
; MOV AH,2
;INT 21H
ADD DL,30H
MOV AH,9
MOV MEG1+34,DL
MOV DX,OFFSET MEG1
INT 21H
MOV AH,9
MOV DX,OFFSET MEG2
INT 21H
MOV CX,8
SHOWMAX:MOV DL,'0'
MOV AH,2
ROL BH,1
ADC DL,0
INT 21H
LOOP SHOWMAX
MOV AH,2
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH,9
MOV DX,OFFSET MEG3
INT 21H
MOV CX,8
SHOWMIN:MOV DL,'0'
MOV AH,2
ROL BL,1
ADC DL,0
INT 21H
LOOP SHOWMIN
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH, 4CH
INT 21H ;返回 DOS
MINFIND: MOV BL,BYTE PTR[SI];把最小值存在BL中
INC SI
LOOP LAST
MAXFIND: MOV BH,BYTE PTR[SI];把最大值存在BH中
INC SI
LOOP LAST
CODE ENDS
END BEG