1
nasm32, x86 어셈블리 언어를 사용하고 있습니다. 데이터 세그먼트에서 일부 숫자를 읽고 싶습니다.x86 어셈블리를 사용하여 데이터 세그먼트에서 데이터를 읽으려면 어떻게해야합니까?
.model small
.stack
.data
DATA1 DB 53H,"$"
DATA2 DB 17H,"$"
.code
.startup
mov dx, @data
mov dx, offset DATA1
add dl,30h
mov ah, 02h
int 21h
mov dl, dh
add dl, 30h
mov ah, 02h
int 12h
.exit
end
이 코드 반환 단지
20
나는 생각 DATA1의 53H (= 83 (10 진수)) 값을 반환합니다. (아스키 문자로)
그러나 이상한 숫자는 반환됩니다. 어떻게 된 거예요? 나는이 결과를 이해하지 못한다.
그리고 어떻게이 코드를 수정할 수 있습니까?
그러나 오류 반환 :
는 같은 것을 의미했다. "immediate operand not allowed" –int21h, AH = 02h는 dl에서 문자를 출력하므로 dx를 해당 주소의 데이터가 아닌 DATA1의 주소로 초기화합니다. 셋째, 53h가''S ''이고, 왜''20 ''을 인쇄 할 것으로 기대합니까? –
답변 해 주셔서 감사합니다. 그렇다면 어떻게 DATA1의 주소에있는 데이터를 읽을 수 있습니까? 'MOV DX, offset DATA1'은 DX <- DATA1의 주소를 의미합니까? 아, 53h는 'S'이지만, 숫자 (10 진수, 83)를 의미합니다. '83'과 같이 DATA1의 번호를 인쇄하고 싶습니다. 그래서 아스키 코드를 만들기 위해 30h를 더했습니다. –