汇编语言统计负数的个数

我需要简单点的,不要太多语句,麻烦大家了
急啊,兄弟们

ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUM DB 9, -1, -2, 8, 123, 17, -23, -78, -56            ;5个负数

LEN EQU $ - NUM

DATA ENDS

CODE SEGMENT

    START:

    MOV AX, DATA

    MOV DS, AX

    SUB BX, BX

    LEA SI, NUM

    MOV CX, LEN

    LP:TEST BYTE PTR [SI], 80H     ;让[SI]中的数的符号位和1000 0000B相与,如果结果不是0,那么代表是负数,反之,正数

    JZ OVER                                    ;结果为0,跳转到OVER

    INC BX                                        ;不为0, BX加1, BX在这里是记录负数的个数的

    OVER:INC SI

    LOOP LP

    MOV AX,4C00H

    INT 21H

CODE ENDS

END START


效果图


PS:若有不明白的地方, 可以追问

追问

你好,谢谢你的答案,那个有比这个简单点的么,语句少点的,麻烦了

追答

这个已经很简化了。。。。

追问

OK

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-06
num dd ...
count dd ...

mov count,0
cmp num,0
jl _INC
...
_INC: inc count
第2个回答  2020-11-18
统计DA_WORD数据区中正数、0、负数的个数,数据定义如下:
DA_WORD DW -1,3,5,0,-5,-7,4,0,-8……
COUNT EQU $-DA_WORD
NUM DB 0 ;存放正数的个数
DB 0 ;存放0的个数
DB 0 ;存放负数的个数
DATAS SEGMENT
ORG 1000H
DA_WORD DW 0FFFFH,3,5,0,0FFFBH,0FFF9H,4,0,0FFF8H
DOUNT EQU $-DA_WORD
ORG 1020H
NUM DB 0 ;存放正数的个数
ZE DB 0 ;存放0的个数
PLUS DB 0
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,DOUNT
MOV CL,1
SHR AX,CL
MOV CX,AX
MOV SI,OFFSET DA_WORD
AG: MOV AX,[SI]
CMP AX,0
JNZ NOZ
INC [ZE]
JMP NEXT
NOZ:TEST AX,8000H
JNZ ISPLUS
INC [NUM]
JMP NEXT
ISPLUS:
INC [PLUS]
NEXT:
ADD SI,2
LOOP AG
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
第3个回答  2013-03-06
是8位的?追问

多少都可以

汇编语言统计负数的个数
LP:TEST BYTE PTR [SI], 80H ;让[SI]中的数的符号位和1000 0000B相与,如果结果不是0,那么代表是负数,反之,正数 JZ OVER ;结果为0,跳转到OVER INC BX ;不为0, BX加1, BX在这里是记录负数的个数的 OVER:INC SI LOOP LP MOV AX,4C00H INT 21H CODE ENDS END START ...

用单片机汇编语言求:1、统计一串数据中正数负数的个数(不包括零)
用单片机汇编语言求:1、统计一串数据中正数负数的个数(不包括零) 2…找出一串数据的正数(或者负数)并从片外RAM传送到片内RAM wo3561758 | 浏览1959 次 |举报 我有更好的答案推荐于2017-12-16 09:04:58 最佳答案 ORG 0000H LJMP 0100H ORG 0100H MOV R7,#06HMOV R0,#30H MOV R1,#00H;存放小于...

[编程]关于汇编语言的负数的表示以及运算
负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

汇编语言 求负数个数 并输出个数
先将这100个数放进一个连续的内存区域(堆栈就挺好用的) 然后用loop循环 逐个取出 放入一个空闲的寄存器 将其值与0比较 小于零的话 将某个设置用来计数的寄存器值加1 最后输出其值就行

如何用汇编语言判断一组数据正负并统计其正数和负数的总个数,再放到...
COUNT_NUM_0 DATA 30H ;存放0的个数 COUNT_NUM_P DATA 31H ;存放正数个数 COUNT_NUM_N DATA 32H ;存放负数个数 ORG 0000H AJMP MAIN ORG 0100HMAIN: MOV A,#0 MOV 31H,A MOV 32H,A MOV 33H,A MOV R7,#30;这组数据总个数,假设有30个 MOV R0,#00...

...51汇编语言,统计片内RAM 30H~40H单元中负数的个数,将结果存放在50H...
start:mov R1,#30h ;指向数据存储首地址 mov R2,#10h ;数据个数 mov R0,#50h ;结果存放单元 mov @R0,#0h ;结果存放单元清零 lp2:mov a,@R1 ;字节数据的最高位=1 则表示为负值 rlc a ;jnc lp1 inc @R0 ;为负值时结果单元加一 lp1:inc R1 ;指向下一个数据...

...编写程序分别统计正数的个数、负数的个数和0的个数
DUP(?)LL EQU $-N Z DB 0 ;正数个数 F DB 0 ;负数个数 L DB 0 ;0的个数 ..MOV CX,LL MOV BX,OFFSET N NEXT:MOV AL,[BX]CMP AL,0 JG BE_Z JL BE_F INC L JMP E1 BE_Z:INC Z JMP E1 BE_F:INC F E1:INC BX LOOP NEXT ;结束 ...

...的字数组table中的负数取绝对值,并统计负数的个数存放入count中(将...
y+di],' ' jmp disp1dispexit: mov ah,9 lea dx,y int 21h rety db 10,13,0,0,0,0,0,'$'dispnum endpcode ends end start(1)将每个数和0比较,统计负数;(2)对负数用求补(neg)指令得到其绝对值;(3)写一个子程序显示正数(用10进制)

汇编语言程序设计题求高手
1.编写一个程序实现:在BUF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数,并将统计的个数分别放到PLUS、NEGATIVE、ZERO单元中。; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code BUF db 23,-69,0,35,46,0,57,68,0,79,81,98,-43,251,21,15,-69,0,...

汇编语言的数据统计
AX CMP AL,0 JG @M1 JL @M2 INC ZERO JMP @MM @M1: INC POSITIVE JMP @MM @M2: INC NEGATIVE @MM: LOOP @M0

相似回答