2013-07-29 3 views
0

나는 지난 1 일 또는 2 회의 파고를 어셈블리에 보냈다. 나는 꽤 좋은 튜토리얼을 읽었으며, 다른 레지스터/이진수 시스템이 어떻게 작동하는지 등을 다루었 다. 그러나 어셈블리 코드 자체에는 실제로 포함되지 않습니다. 어셈블리의 개념과 작동 원리에 대해서만 이야기합니다 (아래 코드와 같은 몇 가지 코드 예제를 제공합니다). 그러나 코드에서 무슨 일이 벌어지고 있는지 설명하지 않아도됩니다.ASM 코드의이 비트 이해하기

msg db 'Displaying 9 stars', 0xa 
len equ $ - msg 
s2 times 9 db '*' 

나는 사물이 작동하는 방법을 알고지고있어 느낌이 있지만, 나는 위의 코드에 대한 몇 가지 질문을하고 싶습니다 (정말 작동보다는 작동 사실을 받아 방법을 이해하려면).

1) 0xa 뒤에 오는 텍스트 (0xa가 개행이라고 가정) VARIABLE (이 경우, $ - - MSG) 변수의 길이를 얻을

2) $합니까? 정말로 $의 목적은 무엇입니까? 여기에 무슨 일이 일어나고 무엇

3) : S2 번 9dB ''* 질문 # 3

내 가정이 변수 S2 단지 9 의 문자열로 설정되는 것입니다. 그렇다면 db ''이 왜 계속 나타 납니까? s2 db '*'시간을 사용하는 것이 더 합리적이지 않습니까? 9

+0

조립품? x86? 어느 것? –

+0

@ JohnSaunders Intel 프로세서, x86 – Justin

답변

1

1) 확실히, 예를 들어 다음과 같이 할 수 있습니다. 두 번째 및 세 번째 줄 등이 있습니다.

2) 예. $는 현재 위치를 의미하므로 $ - 변수는 현재 주소에서 변수의 시작 주소, 즉 길이를 뺀 값을 의미합니다.

3) 9 개의 데이터 바이트가 각각 '*'의 문자 값으로 현재 세그먼트에서 할당되며, 주소에는 s2라는 이름이 지정됩니다.

+0

아, 감사합니다. s2가 TIMES 함수의 일부인 것처럼 보입니다. – Justin