본문 바로가기
반응형

코스웨어/12년 내장형하드웨어207

[Assembly]2012/08/24 작업일지(MASM 컴파일) - by. 이창현 어셈블리어 MASM 컴파일. 그림 1> MASM으로 컴파일전 필요한 파일들. 1. 이전에는 NASM으로 C 파일과 컴파일을 하였는데 이번에는 MASM으로 컴파일을 하였다. 그림1>에서는 MASM으로 컴파일 하기전에 필요한 파일들이당... 그런데 다른 파일 들은 빨간색인데 색이 다른 하나가 있는 것을 볼 수 있을 것이다. 그 파란색으로 된 windbg 파일은 디버깅을 하는데 필요한 파일이라서 따로 색을 주었고 지금은 신경쓰지 않아도 된당... ^^ 그림 2> ml 이라는 명령어로 First.obj 파일 생성하기. 2. 그림 2>에서는 링크를 걸리 위해 필요한 OBJ 파일을 생성 하기 위해서 ml 이라는 명령어를 썼다. 그러나 보면 알수도 있겠지만 NASM 컴파일과는 명령어가 다른 것을 볼 수 있다. NAS.. 2012. 8. 24.
[Assembly] 8월 24일 업무일지 By.정철 이 글을 병마와 싸우고 계신 지윤이햄을 위해 바칩니다 (_ _)그리고 예비군가서 애니팡 하트 자꾸 날리는 동혁이도.... *C언어 부호확장 사례 #include int main() { char A = 0xFF; printf("16 :: %02X\n", A); return 0; } printf에서 인자가 넘어갈때 부호확장이 일어난다.signed -1의 경우 FF인데 부호확장시 (int로) FFFFFFFF가 되서 넘어간다. 우리는 char -1값인 FF가 필요한데출력은 FFFFFFFF로 나온다. C로는 해결 할 수 없는 일이다. 이와 유사한 case로 C에서 fgetc()함수를 사용할때파일의 끝일경우 EOF를 반환하게 되는데fgetc가 int를 반환하지만 EOF는 char -1이다. char형으로 변환하기 .. 2012. 8. 24.
8월 24일 금요일 오후에한 수업내용(windbg사용방법) First.asm 을 만들고 입력뒤, 동그라미친 파일들을 c드라이버 > ARM > Software 안에서 복사해 현재경로에 붙여놓는다. 다음, Alt + Break키를 눌러 환경변수에 들어간뒤, 빨간 사각형에 있는 path를 클릭하고 밑에 편집을 누룬다. 변수 값 제일뒤에 C:\ASM\Software를 Ctrl+C 로 복사한뒤 확인, 이제 밑의 시스템 변수 칸의 Path도 똑같이 클릭후 편집!! 아까 복사한걸 붙여넣기위해 Ctrl + V키를 눌러서 위의 그림처럼 해준뒤 확인!! 그리고 있던 경로에서 위의 그림과 가치 X 가 쳐져있는 파일은 다 지우고, 그리고 도스창을 열어, ml /c /coff /Zi First.asm을 컴파일해준다. 그리고, link /debug /subsystem:console /e.. 2012. 8. 24.
Windbg 사용방법 디버그 사용할때 해야할 컴파일옵션 ml /c /coff /Zi first.asm link /debug /subsystem:console /entry:start /out:main.exe first.obj io.obj Kernel32.Lib Windbg 사용 방법 단축키 F11 을 두번 눌르면 창이 뜸 그리고 View 에서 Registers 와 Memory 를 눌러 킴 이때 메모리 를 열때 '&' 를 붙여줘야한다 그리곤 단축키 F11 을 눌러 진행시킴으로서 CPU 동작순서를 알아본다.끝 2012. 8. 24.
asm 컴파일 우선 first.asm, asm_io.asm, driver.c 의 obj 파일들을 생성한다. cl -c driver.c nasm -f win32 asm_io.asm nasm -f win32 first.asm 생성된obj 파일들을 링크 시켜 실행 파일 생성 cl driver.obj first.obj asm_io.obj ------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------.. 2012. 8. 24.
오늘 수업 한 First.asm 주석 과 소스 ===========================원본=========================== .386 .MODEL FLAT ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD INCLUDE IO.h cr EQU 0Dh Lf EQU 0Ah .STACk 4096 .DATA number1 DWORD ? number2 DWORD ? prompt1 BYTE "Enter First Number :", 0 prompt2 BYTE "Enter Second Number :", 0 string BYTE 40 DUP (?) labe1 BYTE cr, Lf, "The Sum is " SUM BYTE 11 DUP (?) BYTE cr, Lf, 0 .CODE _start: outp.. 2012. 8. 24.
어셈블리 기본형 어셈블리 %include "asm_io.inc" segment .data segment .text global _asm_main _asm_main: enter 0, 0 pusha popa leave ret C #include int main() { int ret_status; ret_status = asm_main(); printf("%d\n",ret_status); return 0; } 2012. 8. 24.
키입력받고 케릭터 lcd 2라인 출력 #include "arm.h" #include "led.h" #include "aic.h" #include "timer.h" #include "dbgu.h" #include "ultra.h" #include "lcd.h" volatile unsigned int dly; #define delay(x) for(dly = 0;(x)> dly; dly++) void INIT(void); int main() { unsigned char ucchar; unsigned int ilcdcount=0; INIT(); while(1) { ucchar=DBGU_RCHAR(); //문자를 입력받아 변수로 입력 if(ucchar==8) //백스페이스를 누를경우 { if(0x3f==ilcdcount) // 2줄처음에서 백스페이시.. 2012. 8. 24.
[ARM] 캐릭터 LCD 2line BackSpace 구현 By.임창엽 캐릭터 LCD 상태가 구려서 .. LCD 화면이 깨끗하지 못합니다. ㅠㅠㅠㅠㅠ BackSpace 구현하는데 잡다구리한 버그가 있어서 명확한 조건으로 다 제거했습니다. BackSpace 로 윗라인에서 아래라인으로 역주행시켜 화면을 다지울수 있도록 하였습니다. ============================================================================================= #include "arm.h" #include "led.h" #include "aic.h" #include "ultra.h" #include "lcd.h" #include "dbgu.h" void Init(void); int main() { unsigned char UC_char; un.. 2012. 8. 23.
728x90
반응형