ธนาวินท์ รักธรรมานนท์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
สรุปคำสั่ง if(เงื่อนไข)
Advertisements

โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
ลักษณะโครงสร้างของผังงาน
Control Statement if..else switch..case for while do-while.
Control Statement for while do-while.
บทที่ 3 ตอนที่ 1 คำสั่งเงื่อนไขและการตัดสินใจ(p
โครงสร้างควบคุมและคำสั่งแบบเงื่อนไข
Lecture no. 5 Control Statements
CS Assembly Language Programming
Recursion Apirada Thadadech. What is Recursion Resursion is program which called itself. The classic example is the factorial function factorial(0) =
ผังงานโปรแกรม (Program Flowchart)
คำสั่งแบบเลือกทำ Week 6.
Lab 8: คำสั่ง Do-While อ.ณัฐพงศ์ พยัฆคิน.
Repetitive Statements (Looping)
อ.อรวรรณ เชาวลิต For คำสั่งวนซ้ำ อ.อรวรรณ เชาวลิต
โครงสร้างคำสั่งแบบเลือก (Selection)
Repetitive Instruction
คำสั่งเงื่อนไขและการควบคุม
โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
คำสั่งแบบมีเงื่อนไข IF Statement
Control Transfer Instructions
Addressing Modes Assembly Programming.
การควบคุมทิศทางการทำงานของโปรแกรม
การเขียนผังงานแบบโครงสร้าง
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
Computer Architecture and Assembly Language
CS Assembly Language Programming
คำสั่งควบคุมเงื่อนไข และการทำงานเป็นรอบ
แบบฝึกหัด 24/12/09. เมื่อคอมพ์ทำคำสั่งต่อไปนี้ จงแสดง ผลลัพธ์และ ค่าแฟลกต่างๆ InstructionResult Z-FlagC-FlagP- Flag S- Flag O- Flag MOV AL,3h Inc AL Mov.
บทที่ 15 โปรแกรมย่อยและแสต็ก
บทที่ 10 โครงสร้างควบคุม
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
คำสั่งควบคุมการทำงาน
สุพจน์ สวัตติวงศ์ gamepad.pigcanfly.com
ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร
Debug #2 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
อินเทอร์รัพท์ (Interrupt)
Chapter 7 Iteration Statement
โครงสร้างควบคุมการทำงาน
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
คำสั่ง while และ do…while
โครงสร้างแบบลำดับ คำสั่ง x คำสั่ง y.
หมวดวิชาคอมพิวเตอร์ โรงเรียนพะเยาพิทยาคม โดย อ.วัชระ การสมพจน์
คำสั่งควบคุมการทำงานของ ActionScripts
บทที่ 6 การควบคุมโปรแกรม.
Week 3 Flow Control in PHP
While.. loop.
การเขียนผังงานแบบทำซ้ำ
Week 5 การทำซ้ำโดย while loop และ do while loop
Chapter 5 การทำซ้ำโดย while loop และ do while loop
Week 5 การทำซ้ำโดย while loop และ do while loop
บทที่ 10 คำสั่งควบคุม OUTLINE 1. คำสั่งแบบเรียงลำดับ (Sequence)
2.3.1 รหัสเทียม (Pseudo code)
การกระโดดและการวนรอบ
หลักการเขียนโปรแกรม ( )
CHAPTER 4 Control Statements
คำสั่งควบคุม (Control Statements)
Chapter 6 Repetition Structure[1] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng.
Chapter 6 Repetition Structure[2] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
การเขียน แบบวนซ้ำ , วนลูป
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Week 5 While and Do-While loop (Control Structure 2)
ผังงานโปรแกรม (Program Flowchart)
บทที่ 2 ขั้นตอนการทำงาน (Algorithm)
Microcomputer and Assembly Language
โปรแกรมภาษาแอสเซมบลี้เบื้องต้น
ใบสำเนางานนำเสนอ:

ธนาวินท์ รักธรรมานนท์ fengtwr@ku.ac.th โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์ fengtwr@ku.ac.th

หัวข้อในวันนี้ โครงสร้างควบคุม โครงสร้างการตัดสินใจแบบ if-then-else โครงสร้างการกระทำซ้ำแบบ repeat-until โครงสร้างการกระทำซ้ำแบบ while โครงสร้างการกระทำซ้ำแบบ for

IF – THEN – ELSE IF condition THEN statement 1 ELSE statement 2 ; False True Statement2 Statement1

Nested Condition IF cond1 THEN statement1 ELSE IF cond2 THEN False True Statement1 condition2 Statement3 Statement2 IF cond1 THEN statement1 ELSE IF cond2 THEN Statement2 statement3

While Loop While condition do statement ; Statement condition False True Statement

Repeat-until Loop Repeat Statement; … Until condition ; Statement False True Statement

โครงสร้าง if-then-else คำสั่ง จริง เท็จ เงื่อนไข if false then jump to else_label then_actions jump to endif Else_label: else_actions endif: cmp al,10 jae abovenine mov dl,al add dl,’0’ jmp endif abovenine: add al,’A’-10 endif: if AL<10 then DL:=AL+’0’ else DL:=AL+’A’-10; EXAMPLE

โครงสร้าง repeat-until คำสั่ง เงื่อนไข เท็จ จริง startlabel: actions ... if false then jump to startlabel EXAMPLE startlabel: mov al,bl mul bl add dx,ax inc bl inc cx cmp dx,100 jbe startlabel repeat DX:=DX+BL*BL; BL:=BL+1; CX:=CX+1; until (DX>100);

โครงสร้าง while เท็จ เงื่อนไข จริง คำสั่ง startlabel: if false then jump to endlabel actions ... jump to startlabel endlabel: startloop: cmp dl,13 jz endloop cmp cx,20 jae endloop add al,dl adc ah,0 inc bx mov dl,data[bx] inc cx jmp startloop endloop: EXAMPLE while (DL<>13) and (CX<20) do begin AX:=AX+DL; BX:=BX+1; DL:=DATA[BX] CX:=CX+1; end;

โครงสร้าง for กำหนดค่าเริ่มต้น เท็จ ค่าของตัวแปร อยู่ในขอบเขต จริง set the value of CX startloop: actions . . . LOOP startloop เท็จ คำสั่ง ค่าของตัวแปร อยู่ในขอบเขต จริง กำหนดค่าเริ่มต้น ปรับค่าตัวแปร initialize index variable startloop: if index value is not in the range then jump to endloop action ... update index variable Jump to startloop endloop:

โครงสร้าง for mov cx,0 mov dl,1 startloop: cmp dl,100 ja endloop mov al,dl mov ah,0 mob bl,7 div bl cmp ah,0 jne endif inc cx endif: inc dl jmp startloop endloop: EXAMPLE CX:=0; for DL:=1 to 100 do begin if DL mod 7 = 0 then CX:=CX+1; end;

โครงสร้าง for ใช้คำสั่ง LOOP สะดวกกว่าในการสร้างวงรอบ แต่ไม่สามารถใช้ในการวนรอบที่ซับซ้อนได้ จึงนิยมใช้คำสั่ง JMP มากกว่า โครงสร้างการทำงานของคำสั่ง LOOPZ และ LOOPNZ มีลักษณะปนกันระหว่างโครงสร้าง for และ repeat EXAMPLE mov ax,0 mov cx,100 startloop: add ax,data[bx] add bx,2 cmp data[bx],0 looopnz startloop AX:=0; CX:=100; repeat AX:=AX+data[BX]; BX:=BX+2; CX:=CX-1; until (data[BX]=0) or (CX=0);

Example 1 Calculate the “n!” (n-factorial) Start Read “n” n := n -1 n > 0 Write “fac” End False True fac := fac * n

Example 2 Convert Celcius to Farenheit Celcius Farenheit 0.0 32.0 1.0 33.8 2.0 35.6 … … 99.0 210.2 100.0 212.0 Farenheit = Celcius * (9/5) + 32

Example 2 Convert Celcius to Farenheit Start Write heading cel <=100 Write output End False True Far := Cel * (9/ 5) + 32 Cel := Cel +1

โจทย์ จงเขียนโปรแกรมตรวจสอบเลขฐานสิบที่รับจากผู้ใช้ (ไม่เกิน 8 บิต) ว่าเป็นจำนวนเฉพาะหรือไม่ โดยแสดงข้อความ yes หรือ no อ่านตัวเลขฐานสิบจากผู้ใช้ ใช้บริการดอสหมายเลข 0Ah ในการอ่านข้อความ แปลงข้อความทั้ง 8 บิตให้เป็นตัวเลข ตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่ ใช้วิธีทดลองหาร

ตัวอย่าง - การคำนวณ ตัวอย่างการแปลง 123 = 1*102 + 2*10 + 3 = (((0*10 + 1) *10 + 2)*10 + 3) 0 * 10 + 1 * 10 + 2 + 3 .data maxlen db 4 strlen db ? str db 4 dup (?) .code mov ax,@data mov ds,ax mov dx,offset maxlen mov ah,0Ah int 21h 4 3 ‘1’ ‘2’ ‘3’ 13 maxlen strlen str

แปลงตัวเลข ทดสอบจำนวนเฉพาะ mov cl , al mov cl , strlen mov ch , 0 sub cx , 2 ;cx=al-2 mov dl , al mov bl , 2 primetest: mov al , dl mov ah , 0 div bl inc bl cmp ah , 0 loopnz primetest jz notprime ; print “yes” notprime: ; print “no” mov cl , strlen mov ch , 0 mov bx , offset str mov al , 0 extract: mov dh , 10 mul dh ;AX=AL*10 ;discard AH mov dl , [bx] sub dl , ’0’ add al , dl ;AL=AL+digit inc bx loop extract

โจทย์การบ้าน รับเลขฐาน 10 จากผู้ใช้มีค่าไม่เกิน 65535 (16-bit) และให้แยกตัวประกอบ จากนั้นให้หาผลบวกตัวประกอบเหล่านั้น ตัวอย่าง 100 => 2x2 + 5x5 = 29 3000 => 2x2x2 + 3 + 5x5x5 = 136 วิธีการ 1. รับอินพุต จากข้อความแปลงเป็นเลขฐาน 10 => DX:AX 2. แยกตัวประกอบ 3. หาคำตอบและแสดงผลลัพธ์เป็นข้อความ

Question ?