BIT & STRING OPERATIONS

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
Advertisements

ความรู้พื้นฐานเกี่ยวกับการเขียนโปรแกรม
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์
ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator (บทที่ 3)
BC320 Introduction to Computer Programming
สถาปัตยกรรมแบบ stack และ การผลิตโค๊ด
Central Processing Unit
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒
บทที่ 2 Operator and Expression
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
หลักการทำงานของคอมพิวเตอร์
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
Week4 Data types, Variables, Operators and Input/output (ต่อ)
Number Representations
SCC : Suthida Chaichomchuen
การจัดการข้อมูลด้วยคอมพิวเตอร์
คำสั่งแบบมีเงื่อนไข IF Statement
Operators ตัวดำเนินการ
1 RECORD TYPE ข้อมูลชนิดเรคอร์ด SCC : Suthida Chaichomchuen
Control Transfer Instructions
Addressing Modes Assembly Programming.
1 Structures & Records SCC : Suthida Chaichomchuen
Arithmetic Instruction
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
บทที่ 3 ตัวดำเนินการ และ นิพจน์
CS Assembly Language Programming
CS Assembly Language Programming Period 30.
CS Assembly Language Programming Period 21.
Functional components of a computer
ตัวแปรและชนิดข้อมูล (Variables and Data Types)
ดีบักเป็นเครื่องมืออันหนึ่งที่ให้ผู้ใช้ ตรวจสอบ และแก้ไขค่าใน หน่วยความจำ โหลด เก็บ ตรวจสอบค่าในเรจิสเตอร์ และสามารถ เขียนโปรแกรมแอสเซมบลีได้อย่าง สะดวก.
ASSIGN3-4. InstructionResult Z-FlagC-FlagP-FlagS-FlagO-Flag MOV AL,9Eh 9Eh H ????? ADDAL,9Eh 3C ADD AL,1Eh 5A
แบบฝึกหัด 24/12/09. เมื่อคอมพ์ทำคำสั่งต่อไปนี้ จงแสดง ผลลัพธ์และ ค่าแฟลกต่างๆ InstructionResult Z-FlagC-FlagP- Flag S- Flag O- Flag MOV AL,3h Inc AL Mov.
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร
ตัวดำเนินการ(Operator)
Debug #2 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
Page: 1 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้ Debug #1 มหาวิทยาลัยเนชั่น จังหวัดลำปาง ผศ. บุรินทร์
นิพจน์และตัวดำเนินการ
ตัวแปร ชนิดข้อมูล และ ตัวดำเนินการใน PHP
CS Assembly Language Programming
บทที่ 8 ตัวดำเนินการ และ นิพจน์
การกระโดดและการวนรอบ
บทที่ 4 นิพจน์ทางคณิตศาสตร์.
หลักการเขียนโปรแกรม ( )
ตัวดำเนินการ และนิพจน์คณิตศาสตร์
บทที่ 10 สตริง.
Lab.
A QUICK OVERVIEW OF PDP-8 ARCHITECTURE
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หลักการเขียนโปรแกรม ( )
Addressing Modes ธนวัฒน์ แซ่เอียบ.
Assembly Languages: PDP8
Chapter 11 Instruction Sets: Addressing Modes
บทที่ 6 คำสั่งเงื่อนไข.
ตัวแปร และชนิดข้อมูล.
การรับและแสดงผลข้อมูล (Input/Output)
CHAPTER 2 Operators.
คุณลักษณะของคำสั่งภาษาเครื่อง ชนิดของตัวถูกดำเนินการ
Introduction to Computer Organization and Architecture Instruction Formats ภาษาเครื่อง รูปแบบคำสั่งเครื่อง.
ระบบตัวเลข, Machine code, และ Register
ใบสำเนางานนำเสนอ:

BIT & STRING OPERATIONS Suthida Chaichomchuen std@kmitnb.ac.th

BOOLEAN OPERATIONS คำสั่งประเภทตรรก เป็นคำสั่งที่มีการปฏิบัติการตามกฎทางตรรก โดยที่ค่าในแต่ละบิตของ operand จะมีความหมายได้ 2 อย่างคือ จริง [1] และเท็จ [0]ผลจากการปฏิบัติคำสั่งจะส่งไปยัง Flag ต่อไปนี้ CF, OF, PF,SF และ ZF

Boolean Logic Instructions รูปแบบคำสั่งคือ [label:] operation destination,source destination: register/memory source: register/memory/immediate

Boolean Logic Instructions AND: ถ้าค่าของคู่บิตเป็น 1 เหมือนกัน ผลลัพธ์จะถูก SET เป็น 1 แต่ถ้าไม่ใช่ผลลัพธ์จะเป็น 0 OR: ถ้าค่าใดค่าหนึ่งของคู่บิตเป็น 1 ผลลัพธ์จะถูก SET เป็น 1 แต่ถ้าไม่ใช่ผลลัพธ์จะเป็น 0

Boolean Logic Instructions XOR: ถ้าค่าของคู่บิตมีค่าที่แตกต่างกัน ผลลัพธ์จะถูก SET เป็น 1 แต่ถ้าไม่ใช่ผลลัพธ์จะเป็น 0 TEST: ปฏิบัติการเสมือนเป็นคำสั่ง AND แต่จะเปลี่ยนเฉพาะค่าของ Flags เท่านั้น ค่าของ operand ยังเหมือนเดิม

Examples of Boolean Logic AND OR XOR Source 0011 0011 0011 Dest 0101 0101 0101 Result: Dest 0001 0111 0110

Examples of Boolean Instructions สมมติให้ BL=0011 1010 และ CH=1010 0011 AND BL,0FH AND BL,00H AND BL,CH OR CH,BL OR CH,CH XOR BL,0FH XOR BL,BL

Examples of Boolean Operations คำสั่ง TEST TEST CX,0FFH TEST BL,00000001B TEST CL,11110000B

Boolean Logic Instructions: NOT เป็นคำสั่งที่ใช้ในการเปลี่ยนค่าบิตของ operand ให้เป็นค่าตรงกันข้าม คือ จาก 1 เป็น 0 และจาก 0 กลายเป็น 1 หรือเป็นการหาค่า 1 s-complement นั่นเอง

Boolean Logic Instructions: NOT รูปแบบคำสั่งคือ [label:] NOT register/memory

Boolean Logic Instructions: NOT กำหนด BL=0011 1010 NOT BL ผลลัพธ์คือ BL=1100 0101

SHIFTING BITS เป็นคำสั่งในการเลื่อนบิต ใช้ได้ทั้ง Register และ Memory เลื่อนไปทางด้านซ้ายหรือขวาก็ได้ เลื่อนได้ทั้ง byte และ word ใช้ได้ทั้งข้อมูลที่มีเครื่องหมายและไม่มีเครื่องหมาย

Shifting Bits Instructions รูปแบบคำสั่งคือ [label:] shift destination,count destination: register/memory count: CL/immediate

Shifting Bits Right Instructions SHR (Shift Logical Right) : unsigned ดำเนินการเลื่อนบิตไปทางขวาโดยบิตที่ถูกเลื่อนออกไปจะบรรจุอยู่ใน Carry flag SAR (Shift Arithmetic Right) : signed คัดลอกค่า Sign bit ใส่ในบิตถัดไปและนำค่าบิตที่ถูกเลื่อนไปบรรจุใน Carry flag

Shifting Bits Right ลักษณะการเลื่อนบิต SHR: SAR: C C S

Shifting Bits Left Instructions SHL (Shift Logical Right) SAL (Shift Arithmetic Right) ทั้ง 2 คำสั่งจะปฏิบัติการเหมือนกัน โดยจะทำการเลื่อนบิตไปทางด้านซ้าย และบิตที่เลื่อนไปจะนำไปใส่ไว้ใน Carry flag

Shifting Bits Left ลักษณะการเลื่อนบิต SHL/SAL: C

Examples of Shifting Bits สมมติให้ AL=10110100B และ CF เป็น 1 SAL AL,1 AL: 01101000 CF: 1 SHL AL,1 AL: 11010000 CF: 0 SAR AL,1 AL: 11101000 CF: 0 SHR AL,1 AL: 01110100 CF: 0

ROTATING BITS เป็นคำสั่งในการหมุนบิต ใช้ได้ทั้ง Register และ Memory หมุนบิตไปทางด้านซ้ายหรือขวาก็ได้ หมุนได้ทั้ง byte และ word ใช้ได้ทั้งข้อมูลที่มีเครื่องหมายและไม่มีเครื่องหมาย

Rotating Bits Instructions รูปแบบคำสั่งคือ [label:] rotate destination,count destination: register/memory count: CL/immediate

Rotating Bits Right Instructions R0R (Rotate Logical Right) ดำเนินการหมุนบิตไปทางขวาโดยบิตที่ถูกเลื่อนออกจะถูกคัดลอกไปไว้ใน Carry flag ด้วย RCR (Rotate with Carry Right) ดำเนินการหมุนบิตร่วมกับค่าใน Carry flag โดยค่าของบิตที่เลื่อนจะนำไปไว้ใน Carry flag และค่าใน Carry flag จะถูกส่งมายังบิตซ้ายสุด

Rotating Bits Right ลักษณะการหมุนบิต ROR: RCR: C C

Rotating Bits Left Instructions R0L (Rotate Logical Left) ดำเนินการหมุนบิตไปทางซ้ายโดยบิตที่ถูกเลื่อนออกจะถูกคัดลอกไปไว้ใน Carry flag ด้วย RCL (Rotate with Carry Left) ดำเนินการหมุนบิตร่วมกับค่าใน Carry flag โดยค่าของบิตที่เลื่อนจะนำไปไว้ใน Carry flag และค่าใน Carry flag จะถูกส่งมายังบิตขวาสุด

Rotating Bits Left ลักษณะการหมุนบิต ROL: RCL: C C

Examples of Rotating Bits สมมติให้ AL=10110100B และ CF เป็น 1 ROL AL,1 AL: 01101001 CF: 1 ROR AL,2 AL: 01011010 CF: 0 RCL AL,1 AL: 10110100 CF: 0 RCR AL,2 AL: 00101101 CF: 0

STRING OPERATIONS เป็นปฏิบัติการเกี่ยวกับชุดของตัวอักษร โดยอาจเป็นได้ทั้งตัวเลข ตัวอักษรหรือสัญลักษณ์พิเศษ จะปฏิบัติการทีละไบต์หรือเวิร์ด

STRING OPERATIONS กำหนด source-string อยู่ใน DS : Data Segment destination-string อยู่ใน ES : Extra Segment ใช้ SI : Source Index ในการอ้างถึงไบต์หรือเวิร์ดของ source-string ใช้ DI : Destination Index ในการอ้างถึงไบต์หรือเวิร์ดของ destination-string

STRING OPERATIONS SI และ DI จะเพิ่มค่าเมื่อการปฏิบัติการกระทำจากตัวอักษรตัวแรกไปยังตัวสุดท้าย SI และ DI จะลดค่าเมื่อการปฏิบัติการกระทำจากตัวอักษรตัวสุดท้ายไปยังตัวแรก

STRING OPERATIONS ใช้ DF : Direction Flag เป็นตัวกำหนดการเพิ่มขึ้นและลดลงของ SI และ DI DF เป็น 0 : SI และ DI จะถูกเพิ่มค่า DF เป็น 1 : SI และ DI จะถูกลดค่า

STRING OPERATIONS ตัวอย่างคำสั่งในการกำหนด Segment ของ string MOV AX,@data MOV DS,AX MOV ES,AX

STRING OPERATIONS ตัวอย่างคำสั่งในการกำหนด Address ของ string LEA DI,BYTE2 LEA SI,BYTE1

STRING OPERATIONS คำสั่งในการกำหนดค่าของ DF CLD : Clear Direction Flag เป็น 0 STD : Set Direction Flag เป็น 1

REP: Repeat String Prefix จำนวนรอบของการทำซ้ำจะกำหนดอยู่ใน CX

Variations of REP REP : ปฏิบัติการจนกระทั่ง CX=0 REPE/REPZ : ปฏิบัติการเมื่อ ZF set หรือจะหยุดการทำงานเมื่อ ZF clear หรือ CX=0 REPNE/REPNZ : ปฏิบัติการเมื่อ ZF clear หรือจะหยุดการทำงานเมื่อ ZF set หรือ CX=0

String Instructions Move: MOVS Load: LODS Store: STOS Compare: CMPS Scan: SCAS

Example of String Instructions DATASTR1 DB 25 DUP (‘*’) DATASTR2 DB 25 DUP (‘ ’) . . . CLD MOV CX,25 LEA DI,DATASTR2 LEA SI,DATASTR1 REP MOVSB

MOVS : Move String Instruction คำสั่งเกี่ยวกับการเคลื่อนย้ายไบต์หรือเวิร์ดจาก source ไปยัง destination มี 3 คำสั่ง MOVS destination-string,source-string MOVSB MOVSW

LODS : Load String Instruction คำสั่งเกี่ยวกับการโหลด string จาก source ณ ตำแหน่งที่ SI ชี้อยู่ไปไว้ที่ AL หรือ AX มี 3 คำสั่ง LODS source-string LODSB LODSW

STOS : Store String Instruction คำสั่งเกี่ยวกับการเก็บค่าของ string ใน AL หรือ AX ไปไว้ที่ destination-string ณ ตำแหน่งที่ DI ชี้อยู่ มี 3 คำสั่ง STOS destination-string STOSB STOSW

CMPS : Compare String Instruction คำสั่งเกี่ยวกับการเปรียบเทียบตัวอักษรระหว่าง source-string กับ destination-string มี 3 คำสั่ง CMPS destination-string,source-string CMPSB CMPSW

SCAS : Scan String Instruction คำสั่งที่ตรวจดูว่าตัวอักษรใน string ที่อยู่ใน ES ณ ตำแหน่งที่ DI ชี้อยู่เหมือนกับค่าใน AL หรือ AX หรือไม่ มี 3 คำสั่ง SCAS destination-string SCASB SCASW