안녕하세요 저는 assembly language
을 배우기 시작했습니다. 나는 그것이 가지 노력하고, 입력을하려고하지만 난 그것을 인쇄하려고 할 때 적절한 문자열을하지 않는기본 입력 어셈블리 언어
.MODEL SMALL
.STACK 1000H
.DATA
MSG db "Hey$"
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH,0AH ; setting the sub function
MOV DX, offset msg ; moving address of msg to dx
INT 21h ; calling interrupt
MOV AH, 09
MOV DX, OFFSET MSG
INT 21h ; for printing
MOV AH, 04Ch ; Select exit function
MOV AL, 00 ; Return 0
INT 21h ; Call Interupt to Terminate program
MAIN ENDP
END MAIN
:
나는 다음과 같은 코드를 썼습니다. 이 list을 사용하여 인터럽트 기능을 선택했습니다. 내가 스크린 샷을 첨부하고
는, 내가 입력을 다음과 같은 문자열을 준 :
Hey this is me taking input
하지만 예기치 않은 결과를 얻었다.
스크린 샷 :
질문 :
- 은 내가 잘못 여기서 뭐하는 거지?
- 어셈블리 프로그램을 작성할 때 사용할 훌륭한 디버거가 있습니까?
- 좋은 어셈블리 자습서에 대한 링크는 매우 좋을까요?
감사합니다.
'0a'는 입력 버퍼를 반환합니다. 바이트 0 = 최대 문자 버퍼가 보유 할 수있는 바이트 1 = 마지막 입력의 문자 수, 바이트 2+ = 실제 문자. 메타 데이터 바이트를 포함하여 전체 버퍼를 덤프하는 것입니다. –
0과 바이트 1, 바이트 2+를 각각 어떻게 처리 할 수 있습니까? –
오프셋 msg + 2를 사용하십시오. 기본적으로 –