전체 글 223

10강 Sequential Logic Circuits2 Design Process (Finite-state Machine(FSM) State transition table,Excitation table, 동기 카운터)

어떻게 Sequential Logic Circuits을 만들지 다뤄보겠다.JK Filp flop 복습심볼진리표더 풀어서 쓴 진리표여가표 (Excitation table)input과 output으로 보는 진리표와 달리 상태의 변화에 따라 JK의 input이 무엇이어야 하는지 나타내는 표이다. Finite-state Machine : 우리가 Sequential Logic Circuits을 쓸 때 state를 가지고 있는데 그 state를 표현할지에 대해서 어떻게 표현할 지 보여주기 때문에Design Process of Sequential Logic CircuitsFinite-state Machine(FSM)프로그래밍 할 때도 많이 사용된다.현재 내가 짜고싶은 알고리즘을 표현 할 수 있다.한정된 상태를 가진 ..

9강 Sequential Logic Circuits : 메모리 소자.(Flip-flop과 latch들)

복습 Combinatorial Logic Circuit(조합논리 회로) vs. Sequential Logic Circuit (순차논리 회로) Combinatorial Logic Circuit과 Sequential Logic Circuit의 가장 큰 차이점은 입력이다.Combinatorial Logic Circuit 현재의 입력이 output에 영향을 준다.stateless(memotyless) 라고 부른다.예시 : arithmetic logic unit (ALU), half adders, full adders, multiplexers, encoders, and decodersSequential Logic Circuit 결과에 현재의 입력 뿐 아니라 과거의 입력도 영향을 준다.예시 : TV 채널sequen..

7강 Combinatorial Logic Circuits 더 많은 예제

복습Half adderFull adderAdder2개의 half adder를 사용하는 Full adderRipple-carry adder리플캐리 에더는 n비트 바이너리 숫자를 더할 수 있다.n개의 full adder의 carry-out bit 는 다음 계산기의 carry-in bit가 된다.Parallel adder (병렬 계산기)라고 불린다.4비트 리플 캐리 계산기 예시 빼기 기능이 있는 리플 캐리 계산기뺄셈은 2의 보수를 이용해서 할 수가 있다.4비트 리플 캐리 계산기(빼기 기능이 있는)더하기 1은 C0으로 했구나..! 2개의 4비트 계산기를 사용하는 1-nibble BCD adder BCD와 Binary계산차이바이너리를 BCD로 계산하는 방법 : 합이 9보다 크면 6을 더한다.따라서 BCD 캐리비트..

6강 Combinatorial Logic Circuits 01

Combinatorial Logic Circuit 조합 논리 회로현재 입력으로만 출력이 나오는 디지털 로직이다.산술논리장치(ALU) , half adders, full adders, multiplexers, encoders, and decoders 등이 있다.half adders : 올림 자릿수를 처리하지 못하고 입력이 2개뿐인 가산기full adders : 올림 자릿수까지 한번에 사용하는 가산기Sequential Logic Circuit 순차 논리 회로현재 입력과 과거의 입력을 이용해서 출력이 나오는 디지털 로직이다.sequential logic circuit(순차 논리)은 상태(메모리)를 가진다는 점조합논리에서는 상태(메모리)가 없다.예시 : TV채널 / 볼륨 변경하기조합 논리 회로를 설계하는 방법론..

[시스템 프로그래밍 11강] Multiplication and Division Instructions & Extended Addition and Subtraction

Multiplication and Division Instructions곱셈 나눗셈 명령.1. MUL (unsigned multiply) Instruction(명령)Arithmetic 연산을 하면서 부호가 있는 것과 없는 것 들을 살펴봤다.이 명령은 unsigned한 값들의 곱을 의미한다.대부분의 Arithmetic 오퍼레이션은 피연산자가 2개였고 대부분이 바이너리 였다. 다만 이 명령은 특이하게도 피연산자를 하나만 받는다는 특징이 있다.그렇다면 나머지 하나의 연산자는 지정이 되어있다는 뜻이다.이 연산자는 피연산자가 메모리나 레지스터이다.상수가 피연산자로 오지 않는다!MUL명령의 3가지 버전8비트의 피연산자가 있다면, 나머지 하나는 AL레지스터로 고정이다.그 결과를 AX레지스터로 집어넣는다.16비트인 경..

[시스템 프로그래밍 10강] Shift and Rotate 명령 및 활용

덧셈 나눗셈을 하려 하는데 그 전에 쉬프트 연산자를 먼저 알아보자.Shift and Rotate Instructionsx86 프로세스는 쉬프트 연산에 많은 명령어 세트를 제공한다.모두 OVERFLOW와 캐리플래그에 영향을 준다.2가지 형태의 쉬프트 연산을 제공한다.1. Logical Shifts and Arithmetic Shifts1. Logical shift우리가 익히 알고 있는 쉬프트 연산이다.8비트의 데이터가 있다고 할 때 한칸씩 우리가 원하는 방향으로 이동 시키고 새로 생성된 비트를 0으로 채우는 것이 특징이다.빠져나온 비트가 캐리 플래그로 이동한다.LSB가 빠져나왔고 MSB는 비어있어서 0으로 채워진다.예시 11001111에 대한 단일 논리적 오른쪽 이동으로 01100111이 생성된다.2. A..

9-2강 Conditional Control Flow Directives (조건부 제어 흐름 지시어)

Conditional Control Flow Directives조건부 제어 흐름 지시어(우리는 이거 쓰면 안돼요!)MASM을 만든 MS에서 조금 더 편하게 하라는 의미로 만들어 준 것이다.high level에 있는 기능을 MASM에서 제공하는 것이다.Directive는 기계어로 번역이 안됨 → 대응하는 기계어가 없어요..! 1. Creating IF Statements.IF, .ELSE, .ELSEIF, and .ENDIF directives또한 연산자도 이런식으로 사용이 가능하다어셈블링 하기 전에 MASM이 어셈블리어로 바꾼 것이다 강조 !! CPU에서 처리하는 게 아니라 번역해주는 것입니다. 기계어 아니고 어셈블리어로 번역!! 과제를 할 떄는 CONDITIONAL CONTROL FLOW Directi..

9 -1 강 Conditional Loop Instructions (LOOPZ,LOOPE) Conditional structure(조건부 구조 예시코드!)

Conditional Loop Instructions(조건부 루프 명령)오늘은 조건부 loop에 대해 다뤄보겠다.loop 복습해보면 : ecx레지스터를 카운터로 사용해서 하나씩 줄여가면서 반복을 진행했다.1. LOOPZ and LOOPE InstructionsLOOPZ : 제로플래그가 세팅 되어있을떄만 Loop 명령처럼 동작하는 명령어이다.LOOPE : LOOPZ와 완전히 동일한 옵코드를 공유한다. (JUMPZ와 JUMPE가 같은것과 같은 개념이다.)두 명령의 특징이 명령은 Loop명령 처럼 작동하지만 Zero flag를 확인해서 0일때만 레이블로 점프를 진행합니다.ECX가 0이 아니고, 제로플래그가 세팅되어있을 때 루프 실행한다.만약 제로플레그가 0이 아니거나 ECX 레지스터가 0이 아닌 경우에는 점프..

[시스템 프로그래밍 8-2]Conditional Jumps (조건부 점프 명령)

1. Conditional Structuresx86 명령어 집합에는 명시적인 상위 수준 논리 구조가 없지만 비교와 점프의 조합을 사용하여 구현할 수 있습니다두 단계1. CMP, AND 또는 SUB와 같은 연산은 CPU 상태 플래그를 수정합니다. 2. 조건부 점프 명령은 플래그를 테스트하고 새 주소로 브랜치를 생성합니다.예제 1(jz)jz (zero flag가 0인 경우에 해당 레이블로 점프)cmp eax, 0 jz L1 ; jump if ZF = 1 . . L1:예제 2 (jnz)AND 명령은 DL 레지스터에서 비트 단위 AND를 수행하여 0 플래그에 영향을 줍니다0 플래그가 비어 있으면 JNZ(0이 아닌 경우 점프) 명령이 점프합니다.and dl , 10110000b jnz L2 ; jum if ZF ..

728x90