명령어(연산코드) + 피연산자(오퍼랜드)어셈블리어에서는 메모리에 접근할때 주소를 계산해야한다!!!상수 (Immediate Value)레지스터 (Register)메모리 (Memory)그중에서도 메모리 오퍼랜드는 \~\~~로 둘러싸인 것으로 표현오퍼랜드 앞에 크기 지정자가
and, or, xor, not 등의 논리연산이 있음. 논리연산은 비트 단위로 이루어짐 => 2진수로 변환에서 0이나 1 따져야함!!!A와 B의 비트가 모두 1이면 1, 아니면 0비트 단위로 분석한 후 A의 값이 바뀜A와 B의 비트중 하나라도 1이면 1, 아니면 0비
참고! 매우 어려움A를 스택 최상단에 쌓음스택 최상단의 값을 꺼내서 A에 대입특정 기능을 수행하는 코드 조각. (= C언어의 함수)프로시저를 사용하면 반복되는 연산을 프로시저 호출로 대체할수 있어서 전체 코드의 크기를 줄이고, 기능별로 코드 조각에 이름을 붙일수 있어서
|이름|유형|명령어|예시|텍스트 |---|:---:|---|---| |mov|데이터 이동|메모리나 레지스터의 값을 옮길때 사용|mov eax, ebx |lea|데이터 이동|mov와 다르게 메모리나 레지스터의 유효주소를 이동시킴|lea eax, ebx |lnc|산술 연산
end로 점프하면 프로그램이 종료된다고 가정하자.프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면?1\. mov dl, BYTE PTR\[rsi+rcx]rsi + rcx =0 + 0x4000000x400000이
다음 어셈블리 코드를 실행했을 때 출력되는 결과로 올바른 것은?