어셈블리 10

깔끔한 어셈 명령어 정리

1. 명령어 정리 명 령 어 설 명 Data Transfer MOV Move 데이터 이동 (전송) PUSH Push 오퍼랜드의 내용을 스택에 쌓는다 POP Pop 스택으로부터 값을 뽑아낸다. XCHG Exchange Register/memory with Register 첫 번째 오퍼랜드와 두 번째 오퍼랜드 교환 IN Input from AL/AX to Fixed port 오퍼랜드로 지시된 포트로부터 AX에 데이터 입력 OUT Output from AL/AX to Fixed port 오퍼랜드가 지시한 포트로 AX의 데이터 출력 XLAT Translate byte to AL BX:AL이 지시한 데이블의 내용을 AL로 로드 LEA Load Effective Address to Register 메모리의 오프셋 ..

어셈블리 2019.07.09

어셈블리 강좌7

제8 장. 반복 기법 -------------------------------------------------------------------------------- 8.1 루프(loop)명령 -------------------------------------------------------------------------------- 비교와 분기를 하나로 합쳐서 한 명령으로 할 수 있도록 된 루프(loop), 스트링(string) LOOP 명령 LOOP 명령은 CX레지스터를 뺄셈식 카운터로서 사용하고 , CX 레지스터가 0 이 될 때까지 어떤 문장들을 되풀이 반복한 뒤 지정한 라벨로 분기하는 명령입니다. 즉, CX에 설정 한 횟수만큼 반복을 하기 위한 명령인 것입니다. LOOP명령은 오퍼랜드에 분기하는..

어셈블리 2019.07.09

어셈블리 강좌6

6.5 프로시듀어의 배치 -------------------------------------------------------------------------------- PROC ~ ENDP는 사람이 보기 편하기 위한 구분에 불과하다. 어셈블러는 실제로 프로시 듀어를 구별하지 않는다. 예제)CALL2.ASM CODE SEGMENT ASSUME CS:CODE EOF EQU 1AH START: CALL GETCH JC EXITP ;--+여기에서 프로시듀어를 호출하고 있다. MOV DL, AL | CALL PUTCH ;--+ JMP START EXITP: MOV AH,4CH INT 21H GETCH PROC MOV AH,8 INT 21H CMP AL, EOF JNE GETCHEND STC RET GETCHEN..

어셈블리 2019.07.09

어셈블리 강좌5

제6장 비교 분기와 서브루틴 -------------------------------------------------------------------------------- 디버그(DEBUG)의 커맨드의 요약 -------------+----------------------------------------+------------------------- 커맨드 | 목적(Purpose) |명령 COMMAND | |형식(Format) -------------+----------------------------------------+------------------------- Assemble |문장을 어셈블 한다. A [번지] Compare |메모리를 비교한다. C범위 번지 Dump |메모리를 표시한다. D ..

어셈블리 2019.07.09

어셈블리 강좌4

5.10 곱셈 명령과 구조 -------------------------------------------------------------------------------- 곱셈 명령 MUL(multiply)에서는 8비트 * 8비트, 혹은 16비트 * 16비트 를 계산할 수가 있습니다. 사용할 때의 제한 : 우선 곱셈할 한쪽은 반드시 AL 레지스터(혹은 AX 레지스터 )에 넣어두지 않으면 안될 니다. 결과는 AX 레지스터(혹은 DX 레지스터를 상위 16비트, AX 레지스터를 하위 16비트 로 간주한 32비트 레지스터 )에 저장됩니다. 따라서 곱셈 명령의 오퍼랜드는 하나이다. 8비트 곱셈 곱셈 결과 저장 +---+ +------------------------------+ +---+ |AL | * | 8비트..

어셈블리 2019.07.09

어셈블리 강좌3

제5장 사칙연산 명령 -------------------------------------------------------------------------------- 가감승제의 사칙연산을 할 수가 있습니다. 대부분의 8비트 CPU에 서는 곱셈 나누 셈을 할 수가 없었는데 사칙연산을 할 수가 있게 된 것은 16 비트 CPU의 큰 특징입니다. ADD 명령의 사용법: ADD AX,1234H 현재의 AX의 내용에 숫자 1234H 가 더하여서 그 결과를 AX 레지스터에 다시 저장 +- 범용 레지스터(8/16비트)-++- 범용 레지스터(8/16비트)-+ ADD | 메모리 ( " ) || 메모리 ( " ) | +- -++- 숫자 ( " )-+ 양쪽 다 메로리로 조합되는 것은 허용되지 않습니다. *. 주의 : 메모리에..

어셈블리 2019.07.09

어셈블리 강좌2

제4장 데이터 전송 명령 -------------------------------------------------------------------------------- MOV 명령과 문자 출력 데이터의 입출력과 전송 명령에 대해서 해설합니다. *. 레지스터에 수치를 대입한다. *. 레지스터와 레지스터 사이에서 데이터를 전송한다. *.레지스터와 메모리 사이에서 데이터를 전송한다. 화면에 " AB "를 표시하는 프로그램 MAIN SEGMENT ; 세그먼트를 알리는 의사 명령 ASSUME CS:MAIN ; ; MOV DL,41H ; 아스키코드 41H ' A ' 자이다. MOV AH,2 INT 21H MOV DL, 'B' MOV BL,2 MOV AH, BL INT 21H ; ; 단순히 줄을 띄우기 위해 삽입된..

어셈블리 2019.07.09

어셈블리 강좌1

아직도 어셈블리 언어가 필요한가. -------------------------------------------------------------------------------- 어셈블리 언어의 지식은 고속 연산 루틴을 작성하기 위해서만 필요한 것이 아니라. 마이 크로 컴퓨터의 시스템을 잘 알기 위하여 필요한 것이다. 메모리 상의 데이터나 I/O 기기를 직접 액세스 하는 등, 고급언어에서는 할 수 없는 조작 을 할 수 있다 라는 것이다. CPU 가 이해할 수 있는 것은 수치로 기술된 명령밖에 이해할 수가 없습니다. 의사 명령이 확충된 매크로 어셈블러: 직접 기계어로는 번역되지는 않지만 번역할 때 어셈블러에 의해 참조되는 것입니다. 어셈블리 언어란: 기계어와 1 대 1로 대응된 명령을 기술하는 언어 어셈블..

어셈블리 2019.07.09

[SoftIce] 초보를 위한 명령어 이해하기

소프트 아이스(SoftICE)란? Nu-Mega에서 만든 세계 최고의 디버거 프로그램입니다. (웹사이트 http://www.NUMEGA.com) 현제 버젼 3.22까지 나왔고 이 버전은 Windows는 물론 NT와 Memphis까지 지원됩니다. 얻을 수 있는 곳은 기타 해커 동호회나 키텔의 개인 게시판 를 치면 됩니다. -이 강좌는 3.22를 기준으로 설명을 합니다.- 1-1. 소프트 아이스의 기동 소프트 아이스(이하 소아)를 설치한 후 단축키(Ctrl + D)를 누르면 소아의 화면이 출력됩니다. 소아는 크게 네 개의 윈도로 구분이 되는데 가장 위에 있는 윈도를 레지스터 윈도우, 두번째의 윈도우를 데이터 윈도우, 어셈블리어가 출력된 부분이 코드/소스 윈도우, 그리고 맨 마지막에 위치한 윈도우를 명령 윈도..

어셈블리 2019.07.09