본문 바로가기

어셈블리

(3)
[POCU 아카데미] COMP2300 어셈블리 프로그래밍 수강 후기 POCU 아카데미 컴퓨터 공학을 제대로 배울 수 있는 온라인 교육 기관이다. 자세한 설명은 아래 링크 참고. https://pocu.academy/ko/About POCU 소개 - POCU 유능한 소프트웨어 엔지니어 및 설계자이자, 유수 공사립 대학의 교수였던 김포프가 창립한 POCU는 탑 프로그래머가 평생 커리어를 유지하려면 반드시 알아야 하는 컴퓨터 공학 수업을 제공하는 pocu.academy 수강 계기 학교에서 '컴퓨터 구조' 수업을 들을 때 어셈블리 코드 예시를 많이 봤는데, 예시를 공부하면서 어셈블리 언어를 잘 이해하면 컴퓨터 친화적인 코드를 짤 수 있겠다라는 생각이 들었고 어셈블리 언어를 깊게 공부하겠다고 마음 먹었다. 마침 POCU 아카데미에서 어셈블리 언어 수업을 런칭하였다. POCU 아카..
[X86 어셈블리] FPU 프로그래밍 / 구의 부피 계산하기 / fmul, fmulp, fdiv, fdivp 구의 부피 공식 반지름이 r일 때 구의 부피 V는 V = (4/3) × π × r³ 위의 간단한 공식을 8087 FPU 프로그래밍으로 구현해보자. 코드 ax 레지스터에 반지름 값을 넣고 스택에 push한다. 이 값을 인자로 하여 get_sphere_volume 프로시져가 구의 부피를 계산한다. TITLE Sphere Volume .DOSSEG .8086 .8087 .MODEL TINY .DATA volume DD ? int_four DW 4 int_three DW 3 .CODE .STARTUP mov ax, 3 ;r push ax call get_sphere_volume add sp, 2 mov ah, 4Ch xor al, al int 21h get_sphere_volume PROC push bp mov..
[X86 어셈블리] FPU 프로그래밍 / 8087 / 주요 명령어 정리 X87과 인텔 8087 X87은 부동소수점 연산에 관련된 X86 아키텍처 명령어 집합이다. 지금은 CPU가 자체적으로 부동소수점 명령어를 처리하지만 먼 과거에는 보조 프로세서(Co-Processor)가 처리했다. 이러한 보조 프로세서 중 하나가 인텔 8087이다. 8087의 레지스터 st0부터 st7까지 총 8개가 있으며 각각 80비트이다. st0을 최상위로 하는 스택의 구조로 사용된다. 예를 들어 두 개의 피연산자를 더하는 FADD 명령어는 피연산자가 명시되어있지 않은 경우 st0과 st1의 값을 더하여 st0에 저장한다. 명령어 데이터 전송 명령어 명령어 뜻 풀이 동작 FILD Integer Load 정수를 st에 push 한다 FIST Integer store 정수를 메모리에 복사한다 FISTP I..