ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
บทที่ 10 โครงสร้างควบคุม
โครงสร้างการตัดสินใจแบบ if-then-else โครงสร้างการกระทำซ้ำแบบ repeat-until โครงสร้างการกระทำซ้ำแบบ while โครงสร้างการกระทำซ้ำแบบ for องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
2
โครงสร้าง if-then-else
รูปแบบโปรแกรมภาษาแอสเซมบลี้ คำสั่ง จริง เท็จ เงื่อนไข if condition is false then jump to else_label then_actions jump to endif_label else_label: else_actions endif_label: EXAMPLE 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; องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
3
โครงสร้าง repeat-until
คำสั่ง เงื่อนไข เท็จ จริง โครงสร้าง repeat-until รูปแบบโปรแกรมภาษาแอสเซมบลี้ startlabel: actions ... if condition is 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); องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
4
โครงสร้าง while โครงสร้าง while รูปแบบโปรแกรมภาษาแอสเซมบลี้ เท็จ
คำสั่ง เงื่อนไข เท็จ จริง โครงสร้าง while รูปแบบโปรแกรมภาษาแอสเซมบลี้ startlabel: if condition is false then jump to endlabel 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; องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
5
โครงสร้าง for โครงสร้าง for รูปแบบโปรแกรมภาษาแอสเซมบลี้
ไม่ใช้คำสั่ง LOOP : ยุ่งยากในการใช้ ใช้คำสั่ง LOOP : สะดวกกว่า แต่ไม่สามารถใช้ในการวนรอบที่ซับซ้อนได้ เท็จ คำสั่ง ค่าของตัวแปร อยู่ในขอบเขต จริง กำหนดค่าเริ่มต้น ปรับค่าตัวแปร initialize index variable startloop: if index value is not in the range then jump to endloop action ... update index variable jump to startloop endloop: set the value of CX startloop: actions LOOP startloop องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
6
โครงสร้าง for โครงสร้างการทำงานของคำสั่ง LOOPZ และ LOOPNZ
EXAMPLE 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: CX:=0; for DL:=1 to 100 do begin if DL mod 7 = 0 then CX:=CX+1; end; โครงสร้างการทำงานของคำสั่ง 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); องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
7
ตัวอย่าง จงเขียนโปรแกรมตรวจสอบเลขฐานสิบที่รับค่าจากผู้ใช้ (ไม่เกิน 8 บิต) ว่าเป็นจำนวนเฉพาะหรือไม่. อ่านตัวเลขฐานสิบจากผู้ใช้ ใช้ Function หมายเลข 0Ah ในการอ่านข้อความ แปลงให้เป็นตัวเลข ตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่ ทดลองหาร การอ่านข้อความ .data maxlen db strlen db ? str db dup (?) .code mov mov ds,ax mov dx,offset maxlen mov ah,0Ah int h องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
8
แปลงตัวเลข ตัวอย่างการแปลง
สมมุติว่าผู้ใช้ป้อน ‘123’ ข้อมูลในหน่วยความจำจะมีค่าเป็น : การแปลง : 123 = 1* *10 + 3 = (((0*10 + 1) *10 + 2)*10 + 3) 4 3 ‘1’ ‘2’ ‘3’ 13 maxlen strlen str 0 * 10 + 1 * 10 + 2 + 3 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
9
แปลงตัวเลข 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 loop extract องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
10
ทดสอบว่าเป็นจำนวนเฉพาะ
การทดสอบ ใช้ 2 - (al-1) หาร 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 bl,0 loopnz primetest jz notprime ; print yes notprime: ; print no องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.