回 帖 发 新 帖 刷新版面

主题:急用,大家帮忙看下啊

ADDR单元中存放着数Y的地址,请在屏幕上显示提示输入的信息,并通过键盘输入1个4位十六进制数Y,统计Y中1的个数存入RESULT单元并在屏幕上显示计算结果。
DATA         SEGMENT
MESG        db    'Please input the number: ','$'
ERMESG    db    'Input the wrong number,exit' ,'$'
Y        db  4  dup(?)
ADDR        dw Y
COUNT    DB ?
DATA        ENDS
CODE        SEGMENT
        ASSUME CS:CODE,DS:DATA
START:            MOV AX,DATA
            MOV DS,AX
            
            mov ah,09h
            mov dx,offset mesg
            int 21h
            
            mov cx,4
            MOV BX,ADDR
            push bx

again:                
            mov ah,01h
            int 21h
            mov dl,0ah
            mov ah,2h
            int 21h
            mov dl,0dh
            mov ah,2h
            int 21h
    
            sub al,30h
            cmp al,0
            jl error
            cmp al,10
            jg change
            mov [bx],al
            inc bx
            loop again
            
            
    change:    cmp al,16
            jg error
            sub al,7h
            mov [bx],al
            loop again
            
            
            pop bx
            mov dx,4        
            MOV DL,0
    loop1:        MOV Ah,[BX]
            MOV CX,8
      REPEAT:    

            SHL AX,1
            JNC NEXT
            INC DL
    NEXT:        LOOP REPEAT
                    sub dx,1
                    jz   exit0
                    inc bx
                    loop loop1

            MOV COUNT,DL
            jmp exit0
            
    error:        
            mov ah,09h
            mov dx,offset ermesg
            int 21h
    exit0:        MOV AH,4CH
            INT 21H
    CODE    ENDS
            END START

回复列表 (共1个回复)

沙发


要看什么?

我来回复

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