어셈블리 문법 보강 4월 10일
Download
Report
Transcript 어셈블리 문법 보강 4월 10일
어셈블리 문법 보강
4월 10일
-1-
자동화 연구실
MASM 어셈블리
OPCODE OPRAND1, OPRAND2
오퍼레이션 방향 주의
OPRAND1 OPRAND2,
OPRAND1
OPRAND2
JMP명령
교재의 9장 참조
각 명령어와 관계된 플래그들 이해
ex) 명령어 JA 현재 C=0 and Z=0 일 때 Jump수행
숫자 지정
MOV AX, 0x300
MOV AX, 0x1A3F
MOV AX, 0xFFFF
-2-
(MOV AX, 300H)
(MOV AX, 1A3FH)
(MOV AX, 0FFFFH)
자동화 연구실
MASM 어셈블리
입출력 포트 설정
8255 레지스터 설정 (이전 수업시간에 배웠음)
TEST.ASM 참고
RAM의 100H에서 프로그램 시작
ORG 100H
어셈블 시 사라지는 것들 (Directives)
지시자들
code segment
assume cs:code
ORG 100H
code ends
end
각종 라벨들
-3-
START, SH_LOOP, …
자동화 연구실
어셈블리 주의사항
<8086 보드를 위한 설정>
<일반적인 코드 설정>
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ORG
100H
// 코드 작성
CODE ENDS
DATA SEGMENT
ORG
10000H
// 데이터 작성
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ORG
100H
// 코드 작성
// 데이터 작성
CODE ENDS
END
DATA ENDS
END
하나의 세그먼트 안에
코드와 데이터를 모두 설정하세요.
-4-
자동화 연구실
어셈블리 기초
MASM 명령어
MOV AX(레지스터), 데이터값
레지스터에 값을 저장해야 할 경우
XOR AX(레지스터), 데이터값
MOV AX, F0F0H
XOR AX, FFFFH AX : 0F0FH
CMP AX(레지스터), 데이터값
레지스터 값과 데이터값의 비교가 필요할 경우
JMP
<라벨이름>
현재 실행라인에서 라벨위치로이동
Ex) LOOP:
XOR AX, FFFFH
MOV AH, 00H
START:
MOV AX, FFFFH
JMP LOOP
-5-
자동화 연구실
어셈블리 기초
MASM 명령어
JE
<라벨이름>
CMP 명령결과, 레지스터 값과 비교 데이터값이 같을 경우 JMP
Ex) MOV AX, F0H
CMP AX, FFH
JE LOOP
JNE
<라벨이름>
CMP 명령결과, 레지스터 값과 비교 데이터값이 다를 경우 JMP
Ex) MOV AX, FFH
CMP AX, FFH
JNE LOOP
OUT <입출력 포트 주소>, <레지스터>
레지스터 값을 출력포트로 Write할 경우
출력되는 값이 1이면 해당 LED는 OFF, 0이면 ON
IN
-6-
<레지스터>, <입출력 포트 주소>
입력포트로부터 데이터값을 레지스터로 Read할 경우
입력되는 값이 1이면 해당 스위치는 OFF, 0이면 ON
자동화 연구실
-7-
자동화 연구실
어셈블리 기초
MASM 명령어
루프문
C의 While문 역할, 어떤 조건을 만족할때까지 명령을 실행해야할 경우
Ex)
MOV AX, FFH
LOOP:
SHL AX, 1
CMP AX, 0
JNE LOOP
OUT PORT_B, AX
레지스터
AX, BX, CX, DX는 16비트 레지스터
AH, BH, CH, DH는 상위 8비트 레지스터
AL, BL, CL, DL은 하위 8비트 레지스터
Ex) MOV AX, 1111111100000000B(0FF00H)
MOV AH, 00000000B
MOV AL, 11111111B
AX 0000000011111111B(00FFH)
-8-
자동화 연구실