▶ 뭉충닷컴
 
mungchung.com login
Site Search
My Space
주절주절...
공부방
쥔장소개
Board
자유게시판
유용한 정보
자료실
Programming
강좌 & Articles
Spring 3.0
프로그래밍 Tip
   -ASP
   -PHP
   -JavaScript
   -HTML
   -Java/JSP
   -Database
   -Crystal Report
   -Visual Basic
   -이클립스
   -리눅스
   -기타
Windows API (VB)
Spread Sheet 7.0
컴퓨터활용 Tip
Other things
StarCraft 전략
StarCraft 문서
김용(金庸)
Son Q & Dieda

어셈 강좌 1, 2장 정리

기타 조회 수 7726 추천 수 0 2004.03.12 09:51:14
뭉충닷컴 *.154.199.102
#####################################
1. 개요
#####################################
10110000 00010000 -> b010
-------- --------
   b0       10


mov AL, 10 : AL 에 10 입력
mov BL, 15 : BL 에 15 입력
add AL, BL : AL과 BL을 더한후 AL에 입력


니모닉 : 기계어의 단위 동작을 영어 약어로 표현한것(ex mov, add...)

~er 도구의미

인터프리터 : 스크립트 코드처럼 라인단위로 실행

디지털 회로의 특징 : 2가지 status 존재(0,1) (각기 0V, 5V)

디지털 데이터는 실제로는 0V, 5V 로 구성된다고 하는데 CPU명령어를 이렇게 표현한 언어는?
  -> 머신코드


#####################################
2. 우선 따라하기
#####################################
레지스터란(register) :
     기억 장소
     CPU안에 존재하는 기억 장소
     이름을 통해서 엑서스
     CPU 동작 제어


15                             0  (16bit)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
         AX(Accumulator Register)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
     AH         |     AL
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
         BX(Base Register)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
     BH         |     BL
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
         CX(Count Register)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
     CH         |     CL
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
         DX(Data Register)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
     DH         |     DL

    <8088내의 범용 레지스터)
- AX, BX, CX, DX 요렇게 되어있다.
- AX에서 X는 잘 보면 H, L 요렇게 나뉜다. ex)AX -> AH + AL
- BH = 56, BL = 34이면 BX는 5635H 이다.


1. MOV AL, 15H : AL 레지스터에 16진수 15를 넣어라
                 15에 H를 넣는 이유는 Hex Value를 의미한다.
                 15H -> AL에 넣는 것을 immediate addressing라고 한다. 이때 15H를 immediate value라 한다.

2. MOV AL, BL : AL 레지스터의 값을 BL레지스터에 넣어라 = register addresing

3. MOV AL, AH : AH 레지스터의 값을 AL에 넣어라
               *) 이것을 A란 헥사값을 AL에 넣어라라고도 헷갈릴수 있으므로
                  영문의 경우에는 0AH 라 명칭한다.

4. MOV AL, 100D : AL 레지스터에 십진수100을 넣어라

5. MOV BH, 32 : BH레지스터에 32(십진수)값을 넣어라 따라서 BH는 32의 16진수 값을 갖는다.
                (두번째 인자가 아무표시도 없으면 십진수)

6. MOV AL, [100] : 메모리 100번지의 1바이트 값을 AL에 넣어라

7. MOV BX, [100] : 메모리 100번지의 2바이트 값을 BX에 넣어라. 100->BL, 101->BH
                   이런 데이타 구조를 little endian 구조라 한다.

8. MOV [35], DX : DX의 값을 메모리 35번지에 넣어라. DL->35번지, DH->36번지

9. MOV [1234], CL : CL의 값을 메모리 1234번지에 넣어라

10. MOV AL, VAR : 변수 VAR의 값을 AL에 넣어라

11. MOV DATE, BX : BX의 값을 DATE변수에 넣어라

12. JMP ABC : ABC라고 레이블이 붙은 지점으로 가라

13. ABC; ADD AL, BL : AL과 BL의 값을 더해서 그 값을 AL에...


문자 'A'를 화면에 출력하고 싶을때
MOV DL, 'A"   ; = mov DL, 41h, ASCII Value
MOV AH,2      ; function 2 = display character in DL
INT 21H       ; DOS Service. 'A' on screen

키보드에서 데이터를 읽어들이고 싶을때
MOV AH,0      ; 함수번호 AH=2, 받은 문자를 출력하지 말고 키입력을 받아라
INT 16H       ; BIOS호출. AL = 키입력의 ASCII 코드

키보드에서 입력을 화면에 출력하는 루틴
MOV AH,0      ; 키 입력을 위한 함수 번호, AH=0으로 정해져있다.
INT 16H       ; BIOS 호출
MOV DL,AL     ; 읽은문자(AL)를 DL에 넣는다.
MOV AH,2      ; 문자 출력을 위한 함수번호, AH=2로 정해져있다.
INT 2H        ; DOS 호출, 실제 문자 출력의 복잡한 과정은 여기서 이루어진다.

도스상에서 운영되는 프로그램을 종료할때
MOV AH, 4CH   ; 함수호출 번호 4C, 종료하라
INT 21H       ; DOS 호출, DOS의 prompt로 회귀한다.


오퍼랜드 - 명령을 이루기 위한 구성요소
           MOV AH, 4CH
               -------
                  오퍼랜드 (첫번째 인자는 목적 오퍼랜드, 두번째는 소스 오퍼랜드)


키보드 입력을 받아 그 값을 하나 증가시켜서 이를 화면에 출력하는 루틴을 작성하라.
레지스터 BL의 값을 +1 증가시키는 명령어는 "INC BL"이다
MOV AH,0
INT 16H
INC AL
MOV DL,AL
INT 21H

"MOV AX,12"명령을 수행하면, AH와 AL레지스터에는 16진수로 각각 어떤 값이 들어가는가?
MOV AX, 0C -> MOV AX, 000C
AH -> 0 (높은자리것이 들어감)
AL -> L (낮은자리것이 들어감)

"MOV DL,'A' = MOV DL, 41H"라고 했는데 문자 'A'의 ASCII코드는 누가 기억하고있는가?
->어셈블러가 내부에 ASCII CODE TABLE를 이용해서 변환해준다.

"MOV DL,'A'", 이 명령어는 즉치(immediate value)를 사용하는가?
->사용한다.

"MOV AX, CX"명령을 수행하면 CX레지스터의 원래 값은 지워지는가?
->안지워진다.






문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 공부하는 곳 -_-; [2] 뭉충닷컴 2002-09-22 10662
31 토비의 스프링 뭉충닷컴 2011-03-28 3937
30 웹사이트 최적화 기법 file [1] 뭉충닷컴 2009-08-10 7997
29 기타 아파치 튜닝 [1] 뭉충닷컴 2009-08-03 8329
28 기타 아파치 설정 httpd.conf 뭉충닷컴 2009-08-03 5386
27 Intercepting Filter 패턴 뭉충닷컴 2009-06-17 7082
26 Core J2EE Pattern file 뭉충닷컴 2009-06-16 6557
25 기타 [C++ Study] Timer 사용 [3] 뭉충닷컴 2004-06-29 8655
24 기타 [C++ Study] Click Count, Toggle, Move String 뭉충닷컴 2004-06-29 7383
23 기타 [C++ Study] WinMain와 WinProc 뭉충닷컴 2004-06-28 8754
22 기타 C# Pattern - Simple Pattern 뭉충닷컴 2004-03-17 6246
21 기타 1. abex3 크랙 설명서 뭉충닷컴 2004-03-12 7047
» 기타 어셈 강좌 1, 2장 정리 뭉충닷컴 2004-03-12 7726
19 기타 SoftICE 4.05 설치 & 간단한 사용법 뭉충닷컴 2004-03-12 9141
18 기타 5. Overloading, Overriding, Runtime Type and 객체지향 뭉충닷컴 2003-12-02 6502
17 기타 4. Flow 통제와 예외 처리(Exception Handling) 뭉충닷컴 2003-11-05 6023
16 기타 3. 연산자와 지정 뭉충닷컴 2003-11-03 6640
15 기타 2. 선언과 엑서스 제어 뭉충닷컴 2003-11-03 5929
14 기타 1. 자바언어의 기본 뭉충닷컴 2003-11-03 5818
13 기타 Parameter 을 asp 처럼 사용하게 만든 class 뭉충닷컴 2003-11-03 6691