프로그래밍

 3204, 1/161 회원가입  로그인  
   p0wermilk
   어셈블리어에 관한 질문입니다.

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6624 [복사]


살다살다 어셈을 직접 코딩하는 날이 오다니...
각설하고 질문이 있습니다.

%include "io64.inc"
section .text
global main
main:
    mov al, 10
    add al, [ma]
    PRINT_DEC 1, al
    xor rax, rax
    ret

section .data
ma db 1


위 어셈의 출력 결과가 11입니다.
코딩하는 것부터 분석하는 것까지는 다 알겠는데
제가 지금 보고 있는 서적엔 아래와 같이 명시되어 있더라구요.


----------------------------------------------------------------
ADD para1, para2(para1 = para1 + para2의 의미)
- para1 : 레지스터 또는 메모리에 있는 값
- para2 : 레지스터, 메모리, 값
- para1, para2가 모두 메모리인 경우는 허용되지 않는다.
----------------------------------------------------------------
보통 대괄호... [eax]이렇게 나오면 그 해당 레지스터의 메모리 주소가 가리키는 값을
의미하는 거잖아요.
근데 "para1, para2가 모두 메모리인 경우..."라고 할 때 여기서 말하는 메모리가
정확하게 무엇을 가리키는 것인지 모르겠습니다.


    mov al, 10
    add al, ma
    PRINT_DEC 1, al
    xor rax, rax
    ret

위와 같은 어셈블리는 add al, ma에서 에러가 나는데요.
al이 레지스터이고 ma또한 변수라고 봐야 되는데
왜 에러가 나는 거죠?


  Hit : 292     Date : 2021/03/31 02:34
[불법/스팸글로 신고하기]



    
군인 add 어셈의 규약?? 때문입니다. 두 번째 오퍼랜드에 주소가 올 수 없습니다. 2021/04/02  
군인 좀 더 자세히 설명 드리자면 ma는 value 1이 담긴 주소 값이고

add reg, value
add value, value
add reg, reg

는 허용이 되지만

add reg, 주소
는 허용이 되지 않습니다.



mov bl, ma
add al, bl

혹은

add al, byte ptr:[ma]

는 가능하실겁니다.
2021/04/02  
p0wermilk 군인 // 아하, 그렇군요. 한 수 배우고 갑니다.
ma가 주소 값을 의미하는 거였네요. 답변해주셔서 감사합니다.
2021/04/02  
3204   c언어 segmentation fault:11 오류 질문드립니다![2]     leebk1124
05/21 91
3203   C++함수관련 질문이에용!![2]     1999dylee
05/11 118
3202   파이썬 지문 드립니다.[1]     kksh1107
04/24 155
3201   리버싱의 세번쨰 꽃 - 역랑-     nninni79
04/20 228
  어셈블리어에 관한 질문입니다.[3]     p0wermilk
03/31 291
3199   달고나 문서 쉘코드[1]     ghjk645
03/24 254
3198 비밀글입니다  c언어 소수 값     adwefq
04/29 0
3197   C언어 소스질문입니다![4]     an0088
01/05 1477
3196   C++ /// 빌드 에러 ㅠㅠ     guichanta
08/23 962
3195 비밀글입니다  c언어 도와주세요ㅠㅠ     su6339
04/06 0
3194   해킹을 배우려고하는데[3]     zoodem04
03/26 2464
3193   c언어를 배우고싶어요 ![7]     dwc07238
02/11 1746
3192   스택이 쌓이는 방향에 관해서!![1]     hackxx123
12/10 1331
3191   해킹툴에서 ip 없이 하드에 심는거에는 어떤게 있을까요?[2]     aowlrgmlals
11/27 1494
3190   C언어 하는데 double 실수를 넣은데 자꾸 0.0이 나와요[2]     fatou10336
11/20 1348
3189   dumpcode.h 이해좀 도와주세요 .[1]     cm6418
11/06 1163
3188   c언어 알고리즘 질문입니다.[3]     alstn8150
10/12 1407
3187     [re] c언어 알고리즘 질문입니다.     dafher
05/13 557
3186   c언어 소스 질문 뭐가 문제인지ㅜㅜㅜㅜ[2]     sjjh96
05/23 2434
3185   파이썬 클래스 공부중 질문[1]     wnsdud5534
04/12 1332
1 [2][3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2021 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com