งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์"— ใบสำเนางานนำเสนอ:

1 โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์

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

3 3 IF – THEN – ELSE IF condition THEN statement 1 ELSE statement 2 ; condition FalseTrue Statement2Statement1

4 4 Nested Condition condition1 False True Statement1 condition2 FalseTrue Statement3Statement2 IF cond1 THEN statement1 ELSE IF cond2 THEN Statement2 ELSE statement3

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

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

7 7 โครงสร้าง 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: mov dl,al add al, ’ A ’ -10 endif: if AL<10 then DL:=AL+ ’ 0 ’ else DL:=AL+ ’ A ’ -10; EXAMPLE

8 8 โครงสร้าง repeat-until startlabel: actions... 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);

9 9 โครงสร้าง while คำสั่ง เงื่อนไข คำสั่ง เท็จ จริง startlabel: if false then jump to endlabel actions... actions jump to startlabel endlabel: EXAMPLE 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: while (DL<>13) and (CX<20) do begin AX:=AX+DL; BX:=BX+1; DL:=DATA[BX] CX:=CX+1; end;

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

11 11 โครงสร้าง 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;

12 12 โครงสร้าง 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);

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

14 14 Example 2 Convert Celcius to Farenheit Celcius Farenheit … … Farenheit = Celcius * (9/5) + 32

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

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

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

18 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 แปลงตัวเลข mov cl, al 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” ทดสอบจำนวน เฉพาะ

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

20 20 Question ?


ดาวน์โหลด ppt โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


Ads by Google