Programming/OS : OSASK2008.11.28 10:26


; 자료형의 크기
DB           ; "Data Byte"의 약어로 1Byte
DW           ; "Data Word"의 약어로 2Byte
DD           ; "Data Double-Word"의 약어로 4Byte


CYLS EQU 10 ; #define CYLS  10

; 패딩
RESB 10   ; "Reserve Byte"의 약어로 10바이트를 띄워놓는다 (0x00)
RESB 0x1FE - $     ; $는 선두로부터 몇바이트 떨어져이는지



; 명령어
ORG 0x7c00   ; 실행시에 PC의 메모리내의 어디에 로딩되는지 ($를 좌우)


MOV AX,0           ; AX = 0
MOV BYTE[678], 123   ; BYTE[]캐스팅, '데이터크기[주소]'

ADD SI, 1           ; SI += 1
CMP AL, 0           ; AL과 0의 비교

HLT           ; CPU정지명령







; JUMP명령
entry:           ; 레이블 선언

JUMP entry           ; Goto명령, 레이블로 무조건 점프
JE           ; CMP의 비교결과가 같으면 점프
JC           ; Carry플래그가 1이면 점프(자리올림)
JNC                            ; Carry플래그가 0이면 점프

JAC                            ; 크거나 같으면 점프
JBE                            ; 작거나 같으면 점프
JB                              ; 작으면 점프








Posted by 시긔양

댓글을 달아 주세요

Programming/OS : OSASK2008.11.28 10:25

 BIOS들이 설계된 시대에는 CPU는 32비트 레지스터를 붙이는것이 어려웠기 때문에 보조적인 역할을 하는 세그먼트레지스터라는것을 만들었습니다.
 그리고 메모리의 번지를 지정할 때 이 세그먼트 레지스터를 사용하게 되었습니다

MOV   AL, [ES:BX]          와 같이 사용하며    EX * 16 + BX 로 계산합니다.

ES레지스터로 번지를 대략 정한후 BX로 세세하게 지정







세그먼트 레지스터의 종류

ES -------- 엑스트라 세그먼트 (Extra Segment: 덤 세그먼트)
CS -------- 코드       세그먼트 (Code Segment)
SS -------- 스택       세그먼트 (Stack Segment)
DS -------- 데이터    세그먼트 (Data  Segment)
FS -------- 명칭없음  (덤 세그먼트 2)
GS -------- 명치없음 (덤 세그먼트 3)


Posted by 시긔양

댓글을 달아 주세요