728x90 분류 전체보기232 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 캐리비트.. 2023. 5. 24. 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채널 / 볼륨 변경하기조합 논리 회로를 설계하는 방법론.. 2023. 5. 24. 5강 Boolean Algebra NOT AND OR operationsBoolean 규칙1. 0과 1과 연산2. 부정과 계산3. 멱등법칙 4. 대합법칙5. 교환법칙6. 결합법칙7. 분배법칙중요!! 연습단순한 이론총 이론드모르간 법칙이중성 원리(Duality principle)덧셈과 곱셈을 바꾸면 결과값이 반전되는 원리논리 회로에 실습실습 1실습 2 Uploaded by N2T 2023. 5. 24. [시스템 프로그래밍 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비트인 경.. 2023. 5. 18. [시스템 프로그래밍 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.. 2023. 5. 16. 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.. 2023. 5. 15. 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이 아닌 경우에는 점프.. 2023. 5. 15. [시스템 프로그래밍 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 .. 2023. 4. 28. [시스템 프로그래밍 8-1]Boolean and Comparison Instructions (어셈블리어에서 불린 연산자) Boolean and Comparison Instructionsif와 else에 대해서 공부하기 전에 미리 boolean 연산자에 대해서 보겠다.인텔 명령어 세트에는 이미 부울 연산 명령어가 포함되어있다.이 표에서는 보이는 TEST연산은 아마 익숙치 않을텐데 간단하게 설명하면 AND와 같은 연산인데 결과를 저장하지는 않는 것이다. 뒤에서 왜 쓰는지 보겠다. The CPU Status Flags부울 명령은 Zero, Carry, Sign, Overflow, and Parity flags 에 영향을 준다.작업 결과가 0과 같으면 0 플래그가 설정됩니다.캐리 플래그는 연산이 대상 피연산자의 가장 높은 비트의 캐리를 생성할 때 설정됩니다.Sign 플래그는 대상 피연산자의 상위 비트의 복사본입니다.오버플로 플래그.. 2023. 4. 28. 이전 1 ··· 7 8 9 10 11 12 13 ··· 26 다음 728x90