微机原理编程题!计算负数的个数问题!

微机原理编程题!计算负数的个数问题!,第1张

统计负数个数

设数据段有如下有符号数定义

NUM DB -19, 28, 37, -46, 55, 61, -74, 255

设计一个程序,完成两项要求:

⑴ 统计并且显示负数的个数;

⑵ 求最大值和最小值并在屏幕上显示。

显示格式由自己决定。

.MODEL SMALL

.STACK 100

.DATA

NUM DB -19, 28, 37, -46, 55, 61, -74, 255

COUNT EQU $-OFFSET NUM

DATA DB 3 DUP(0)

MESS1 DB " MAX:$"

MESS2 DB " MIN:$"

MESS3 DB " NUMBER OF NEGETIVE:$"

.CODE

.STARTUP

MOV SI,OFFSET NUM

MOV DI,OFFSET DATA

MOV AL,[SI]

MOV [DI],AL

MOV [DI+1],AL

MOV CX,COUNT内存中数据的个数

XOR BX,BX储存个数,最后存在[DI+2]

COMP: MOV AL,[SI]循环比较以及更新数值

INC SI

CMP AL,[DI]

JL L1

MOV [DI],AL

L1: CMP AL,[DI+1]

JG L2

MOV [DI+1],AL

L2: CMP AL,0

JGE L3

INC BX

L3: LOOP COMP

MOV [DI+2],BX

MOV DX,OFFSET MESS1-----输出最大值

MOV AH,9

INT 21H

MOV AL,[DI]

CALL OUTPUT

MOV DX,OFFSET MESS2-----输出最小值

MOV AH,9

INT 21H

MOV AL,[DI+1]

CALL OUTPUT

MOV DX,OFFSET MESS3-----输出负数个数

MOV AH,9

INT 21H

MOV AL,[DI+2]

CALL OUTPUT

MOV AH,4CH

INT 21H

------子过程输出十六进制整数

OUTPUT PROC

MOV BL,AL

MOV CL,4

SHR AL,CL

CALL PRINT 输出高位

MOV AL,BL

AND AL,0FH

CALL PRINT 输出低位

MOV AH,2

MOV DL,'H'

INT 21H 输出H符号

RET

OUTPUT ENDP

PRINT PROC 子程序,输出16进制数

MOV AH,02H

MOV DL,AL

CMP DL,09H

JB L4

ADD DL,7

L4: ADD DL,30H

INT 21H

RET

PRINT ENDP

.EXIT

END

DAT SEGMENT

BLOCK DB -1,-3,5,6,-2,0,20,10

PLUS_D DB 8 DUP(?) 正数缓冲区

MINUS_D DB 8 DUP(?) 负数缓冲区

PLUS DB 0

MINUS DB 0

PLUSS DB THE PLUS DATA HAVE:,$,0DH,0AH

MINUSS DB THE MINUS DATA HAVE:,$,0DH,0AH

PLUSNUMS DB THE PLUS DATA NUMBER IS:,$

MINUSNUMS DB THE MINUS DATA NUMBER IS:,$

DAT ENDS

CODE SEGMENT

ASSUME CS:CODE,DSDAT

MOV AX,DAT

MOV DS,AX

STAR:

MOV SI,OFFSET BLOCK

MOV DI,OFFSET PLUS_D

MOV BX,OFFSET MINUS_D

MOV CX, 8 数据个数送CX

GOON: LODSB AL← [SI]

TEST AX, 80H

JNZ JMIUS 为负数,转

INC PLUS 正数个数加一

STOSB [DI] ←AL,传正数

JMP AGAIN

JMIUS: INC MINUS 负数个数加一

XCHG BX, DI

STOSB 送负数到缓冲区

XCHG BX, DI

AGAIN: DEC CX

JNZ GOON

MOV AX,$

MOV [DI], AX

MOV [BX],AX

LEA DX,PLUSNUMS

MOV AH,9

INT 21H

MOV DL,PLUS

MOV AH,8

INT 21H

LEA DX,PLUSS

MOV AH,9

INT 21H

LEA DX,PLUS_D

MOV AH,9

INT 21H

LEA DX,MINUSNUMS

MOV AH,9

INT 21H

MOV DL,MINUS

MOV AH,8

INT 21H

LEA DX,PMINUSS

MOV AH,9

INT 21H

LEA DX,MINUS_D

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END STAR


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12145987.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存