1 / 10

บทที่ 10 โครงสร้างควบคุม

บทที่ 10 โครงสร้างควบคุม. โครงสร้างการตัดสินใจแบบ if-then-else โครงสร้างการกระทำซ้ำแบบ repeat-until โครงสร้างการกระทำซ้ำแบบ while โครงสร้างการกระทำซ้ำแบบ for. เงื่อนไข. จริง. เท็จ. คำสั่ง. คำสั่ง. cmp al,10 jae abovenine mov dl,al add dl, ’ 0 ’

Download Presentation

บทที่ 10 โครงสร้างควบคุม

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 10 โครงสร้างควบคุม • โครงสร้างการตัดสินใจแบบ if-then-else • โครงสร้างการกระทำซ้ำแบบ repeat-until • โครงสร้างการกระทำซ้ำแบบ while • โครงสร้างการกระทำซ้ำแบบ for 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  2. เงื่อนไข จริง เท็จ คำสั่ง คำสั่ง 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; โครงสร้าง if-then-else • โครงสร้าง 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 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  3. คำสั่ง คำสั่ง เท็จ เงื่อนไข จริง 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); โครงสร้าง repeat-until • โครงสร้าง repeat-until • รูปแบบโปรแกรมภาษาแอสเซมบลี้ startlabel: actions ... actions if condition is false then jump to startlabel EXAMPLE 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  4. เท็จ เงื่อนไข จริง คำสั่ง คำสั่ง 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; โครงสร้าง while • โครงสร้าง while • รูปแบบโปรแกรมภาษาแอสเซมบลี้ startlabel: if condition is false then jump to endlabel actions ... actions jump to startlabel endlabel: EXAMPLE 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  5. กำหนดค่าเริ่มต้น เท็จ ค่าของตัวแปร อยู่ในขอบเขต จริง คำสั่ง คำสั่ง ปรับค่าตัวแปร โครงสร้าง for • โครงสร้าง for • รูปแบบโปรแกรมภาษาแอสเซมบลี้ • ไม่ใช้คำสั่ง LOOP : ยุ่งยากในการใช้ • ใช้คำสั่ง LOOP : สะดวกกว่า แต่ไม่สามารถใช้ในการวนรอบที่ซับซ้อนได้ 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: set the value of CX startloop: actions LOOP startloop 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  6. 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; 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); โครงสร้าง for EXAMPLE • โครงสร้างการทำงานของคำสั่ง LOOPZ และ LOOPNZ • มีลักษณะปนกันระหว่างโครงสร้าง for และ repeat EXAMPLE 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  7. ตัวอย่าง • จงเขียนโปรแกรมตรวจสอบเลขฐานสิบที่รับค่าจากผู้ใช้ (ไม่เกิน 8 บิต) ว่าเป็นจำนวนเฉพาะหรือไม่. • อ่านตัวเลขฐานสิบจากผู้ใช้ • ใช้ Function หมายเลข 0Ah ในการอ่านข้อความ • แปลงให้เป็นตัวเลข • ตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่ • ทดลองหาร • การอ่านข้อความ .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 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  8. maxlen 4 strlen 3 str ‘1’ ‘2’ ‘3’ 13 0 * 10 + 1 * 10 + 2 * 10 + 3 แปลงตัวเลข • ตัวอย่างการแปลง • สมมุติว่าผู้ใช้ป้อน ‘123’ ข้อมูลในหน่วยความจำจะมีค่าเป็น : • การแปลง : 123 = 1*102 + 2*10 + 3 = (((0*10 + 1) *10 + 2)*10 + 3) 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  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 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

  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 204221 องค์ประกอบคอมพิวเตอร์และภาษาแอสเซมบลี้ ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ สัณฑิติ พัชรรุ่งเรือง จิตร์ทัศน์ ฝักเจริญผล

More Related