하드웨어 14

[IA-32] LinkLibrary

* LinkLibrary - clrscr : console 창을 비우고, 커서를 왼쪽 상단에 위치시킨다. - crlf : 연속된 Output의 끝을 찍는다.(엔터후 왼쪽으로 커서이동) - gotoxy : cursor를 (dl,dh)로 이동시킨다. dl : 0~79 / dh : 0~24 - DumpMem : "ESI(시작주소)"부터 "EBX(간격)"씩 이동하며, "ECX(개수)"개의 16진수를 출력한다. ex).dataArray dword 10h,20h,30h.codemov esi, offset Arraymov ecx, lengthof Arraymov ebx, type ArrayDumpMem;10h 20h 30h - DumpRegs : 현재 Register의 상태와 Flag상태를 보여준다 - GetMsec..

[IA-32] Operator & Directive

* Operand ⓐ offset operator - OFFSET variable - segment 시작부터 변수까지의 거리 (data segment 시작주소로부터 떨어진거리) ※ 주소는 4Byte이기 때문에 4Byte register(reg32)에 넣어준다. ⓑ ALIGN directive - byte, word, dword, 단락의 경계를 정렬 - ALIGN bound - bound의 값은 1,2 or 4가 될 수 있다. - CPU가 홀수보다 짝수 저장소에 접근을 더빨리 하기 때문에 사용한다. ex) bval BYTE ? ; offset 00401000 ALIGN 2; 2byte씩 데이터 간격을 늘린다. wVal word ?; offset 00401002 (Align이 default였으면 byte의 ..

[하드웨어] IA-32 Basic operand and operation, flag 실습

Title Program Template (lab1.asm) INCLUDE Irvine32.inc .dataval1 word 1000hval2 word 2000harrayBbyte10h, 20h, 30h, 40h, 50harrayWword100h, 200h, 300harrayDdword10000h, 20000h, 30000h .codemain PROCmov bx, 0A69Bh; insert 0A69Bh into bx.movzxeax, bx; eax = 0000A69Bhmovzxedx, bl; eax = 0000009Bhmovzx cx, bl ; cx = 009Bh, tail(4bit) of ecxmovax, val1; ax = 1000hxchg ax, val2; ax = 2000hval2 = 1000hm..

[하드웨어] IA32 Basic Operation and Operand Type

* Operand type - Immediate (즉시값) : 상수, 숫자 - register (레지스터) - memory (메모리) - R8 : AH, AL, BH, BL, CH, CL, DH, DL - R16 : AX, BX, CX, DX, SI, DI, SP, BP - R32 : EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP - SERG : CS, BS, SS - IMM : immediate value, number - r/m [size] : register or memory > Direct Memory Operands // 변수는 주소값을 가르킨다. 변수에서 +-를 시켜서 직접적으로 이동이 가능(Offset move) .data var BYTE 10h; offset valu..

[하드웨어] Assembly Part 1 (IA-32)

* Assembly Language - Integer Constant : 부호와 하나이상의 숫자 + 접미에 진수가 붙음(radix) [{+|-}] digits [radix] [radix] > h | r | q | o | t | d | y | b > h : hexa, r : encoded real, q or o : octa, t : decimal(alterute) d : decimal, y : binary(alterate), b : binary ※ 16진수는 변수와의 구분을 주기 위해서 만앞에 0을 붙여준다. ※ 만약 radix가 없다면 10진수로 생각!! ex) 26 decimal / 32q octa / 1101b binary / 0A2h hexa - Integer Expression : 정수 값과 산술..

[하드웨어] Finite State Machine

* Finite State Machine(FSM) - State register와 2개의 Combinational logic으로 이루어져 있다. > State register : 현재의 상태를 저장하고, 다음 상태를 불러온다. > Combinational logic : 다음 상태를 계산하고, 출력을 계산한다. : input을 이용해 next state 계산 // current state를 이용하여 output 계산 - Input과 Output과 state는 별개의 것이다. - 다음 상태는 현재상태와 입력들에 의해서 결정되며, 두 가지 형태의 FSM이 존재한다. ⓐ Moore FSM : 오직 현재의 상태에만 의존하여 결과 값이 도출된다. ⓑ Mealy FSM : 현재의 결과값과 입력값의 조합으로 결과 값이..

[하드웨어] Sequential Logic Part 1

* Sequential Logic - 현재 들어온 Input과 이전에 들어온 Input 값의 조합으로 Output이 결정된다. - 이전 값을 저정할 메모리가 필요하다. - State Variable > State : 미래에 회로가 갖을 값에 대한 정보를 State라고 한다. > 이 State의 집합을 state variable라고 한다. * Laches And Flip-Flops - 단일로(1bit)의 State를 저장하는 요소들 - Memory Building : 안정된 상태를 갖는 2개의 요소로 값을 저장한다. - N개의 안정된 상태를 갖는 요소는 logN bit의 state variable이 필요하다. ⓐ Bistable Circuit(양안정 회로) 1) Q = 1 > I1은 0이 된다는 것이다. ..

[하드웨어] Combinational Circuit Part 3

* Karnaugh Maps(K-maps) - 최대 4개의 변수를 boolean algebra를 최소화 할 수 있다. - AB + A(inverse B) = A를 이용 - 카누프 맵은 Gray Code에 의거하여 겉이 포장된다. > Gray Code : 인접한 항에서 오직 하나의 변수 만이 다르게 하기 위해서 사용 - K-maps으로 인해 나온 식은 Sum-of-product의 형식으로 최소화 되서 나온다. - K-maps의 규칙 ⓐ 모든 1을 묶기 위한 최소한의 원의 수를 구한다 ⓑ 각각의 원은 반드시 1로 차있어야 한다. ⓒ 각각의 원은 가능한 커야한다. ⓓ 각각의 원의 크기는 2^n이여야 한다.(1,2,4,8) ⓔ 만약 맵의 원을 줄일 수 있다면, 하나의 1은 여러번 묶일 수 있다. ex) - K-..

[하드웨어] Combinational Circuit Part 2

* Priority Encoder Hardware(우선 순위 회로) - 우선순위가 가장 높은 것으로 회로를 실행한다. ex) Priority A>B>C * Don't care - In Truth table(진리표 안에서!) Truth table을 축소화. - X 로 표시하며 0이든 1이든 아무거 나 들어와도 회로가 결정될때 사용한다. ex) 이를 이용해서 위의 진리표를 줄여보면... * Bubble Pushing - 회로의 Cost를 낮추기 위해서 ( OR,AND 게이트를 NOR, NAND로 변경) - 회로의 이해를 높이기 위해서 ( NOR, NAND 게이트를 OR, AND로 변경) - 버블 개념은 이전(Part 1)에서 설명했으므로 넘어가며, 버블을 줄이는 법을 보겠다. > Output 에서 input..