어셈블리 문법 보강 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-
자동화 연구실