主题:急用,大家帮忙看下啊
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
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