回 帖 发 新 帖 刷新版面

主题:各位帮帮忙啊 解答一下编程题

从DBT开始单元存有10个带符号字节数,求出其中正数,负数,零的个数。请各位高手 解答一下。

回复列表 (共4个回复)

沙发

这个不难吧
 怎么有人看没人回帖呢

板凳

DATA    SEGMENT
        DBT  DB 12,45,0,-4,-5,0,5,4,-8,6
    STR  DB 'The times of 0 - +',0ah,0dh,'$'
DATA    ENDS
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA
START:  MOV  AX,DATA
        MOV  DS,AX
        LEA  SI,STR
    MOV  DX,SI
     MOV  AH,9H
    INT  21H
    MOV SI,OFFSET DBT
    MOV CX,10
    MOV BX,3030H;将其先制30H 为了使其成为ASC||供输出
    MOV DL,30H
LP:    MOV AL,[SI]
    CMP AL,0
    JZ  NEXT0
    jG  NEXT1
    INC BL
    JMP NEXT2
NEXT1:    INC BH
    JMP NEXT2
NEXT0:    INC DL
NEXT2:    INC SI
    LOOP LP
    MOV AH,2
    int 21H
    MOV DL,BL
    INT 21H
    MOV DL,BH
    INT 21H
        MOV  AH,4CH
        INT  21H
CODE    ENDS
        END  START

3 楼

不好意思  为了追求速度 格式不太规范
 就凑合着了
 结果235
是表示 2个0
3个负数
5个正数
 方法是是那样就可以了

4 楼


我的data segment
    string1 db 'zhengshu:','$'
    string2 db 'fushu:','$'
    arrayM db -8,-4,-5,-44,-21,-5,7,3,9,4
           db 44,-65,65,21,77,1,-1,54,32,10
    arrayN db 20 dup(0)
    arrayP db 20 dup(0)
ASCII DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
          DB 41h,42h,43h,44h,45h,46h  
data ends
code segment 'code'
    assume cs:code,ds:data
start:mov ax,data
      mov ds,ax
      lea si,arrayM
      lea di,arrayN
      lea bx,arrayP
      mov dx,0
      mov cx,20
next1: mov al,[si]
      test al,80h
      js next
      mov [di],al
      inc dx
      inc si
      inc di
      dec cx
      jnz next1
      push dx
      jmp next2
next: mov [bx],al
      inc si
      inc bx
      dec cx
      jnz next1
next2:lea dx,string1
      mov ah,9
      int 21h
      pop dx
      mov ax,dx
      call aldisp
      push dx
      mov dl,0dh
      mov ah,2
      int 21h
      mov dl,0ah
      mov ah,2
      int 21h
      lea dx,string2
      mov ah,9
      int 21h
      pop dx
      mov ax,14h
      sub ax,dx
      call aldisp
      mov ah,4ch
      int 21h
aldisp proc
    push ax    ; 保护入口参数
    push cx
    push ax    ;暂存数据
    mov cl,4
    shr al,cl ;转换AL高4位
    call htoasc 
    pop ax
    call htoasc ;转换低4位
    pop cx
    pop ax
    ret
aldisp endp
htoasc proc 
    push ax
    push bx
    push dx
    mov bx,offset ASCII
    and al,0fh
    xlat
    mov dl,al
    mov ah,2
    int 21h
    pop dx
    pop bx
    pop ax
    ret
htoasc endp 

code ends
     end start

我来回复

您尚未登录,请登录后再回复。点此登录或注册