DTSEG SEGMENT
DATAW DW 97F4H
COUNT DB 0
CNT_ASC DB 2 DUP(0), '$'
DTSEG ENDS
CDSEG SEGMENT
START:
ASSUME CS:CDSEG, DS:DTSEG
MOV AX, DTSEG
MOV DS, AX
SUB AL, AL
MOV DL, 16
MOV BX, DATAW
AGAIN: ROL BX, 1
JNC NEXT
ADD AL, 1
DAA
NEXT: DEC DL
JNZ AGAIN
MOV COUNT, AL
CALL BCD2ASC
CALL DISPLAY
MOV AH, 4CH
INT 21H
END START
BCD2ASC PROC
MOV AL, COUNT
MOV AH, AL
AND AX, 0F00FH
MOV CL, 4
SHR AH, CL
OR AX, 3030H
XCHG AH, AL
MOV CNT_ASC, AX
RET
BCD2ASC ENDP
DISPLAY PROC
MOV AH, 09
MOV DX, OFFSET CNT_ASC
INT 21H
RET
DISPLAY ENDP
이 코드는 '정수 단어에 포함 된 1의 수입니다.' '97F4H'는 정수 단어이고 COUNT는 1의 수라고 생각합니다. 마지막 줄에 오류가 있습니다. 이 코드를 수정하는 방법을 모르겠습니다. 'CDSEG ENDP'를 어디에 넣어야할지 모르겠습니다. 이 프로그램을 처음 사용합니다. 도와주세요 ~MASM32 - 치명적인 오류 A1010 : 일치하지 않는 블록 중첩 : CDSEG
DISPLAY ENDP 다음에 'CDSEG ENDS'를 추가하지만 오류가 있습니다 (파일 끝에 END 지시문이 필요함). MOV AX, DTSEG (기호 유형 충돌)에 또 다른 오류가 있습니다. 어떻게 해결할 수 있습니까? –
'END START'는 중간이 아닌 파일의 끝에 위치합니다. –