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

10
204221 ออออออออออออออออออออออออออออออออออออออ ออออออออออออออออออออออออออ ออออออออออออออออออออออ อออออออ อออออออออออออ ออออออออออ ออออออออออ อออออ 10 อออออออออออออออ • ออออออออออออออออออออ อออ if-then-else • ออออออออออออออออออ อออออออ repeat-until • ออออออออออออออออออ อออออออ while • ออออออออออออออออออ อออออออ for

Upload: timon-savage

Post on 30-Dec-2015

12 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

บทท�+ 10 โค์รงสร-างค์วบค์"ม

• โค์รงสร-างการต�ดส�น์ใจิแบบ if-then-else

• โค์รงสร-างการกระท0าซ0�าแบบrepeat-until

• โค์รงสร-างการกระท0าซ0�าแบบwhile

• โค์รงสร-างการกระท0าซ0�าแบบ for

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

• โค์รงสร-าง if-then-else

• ร1ปแบบโปรแกรมภาษาแอสเซมบล��

โค์รงสร-าง if-then-else

ค์0าส�+งจิร�ง

ค์0าส�+งเท2จิ

เง$+อน์ไข

if condition is false then jump to else_label then_actions jump to endif_labelelse_label: else_actionsendif_label:

cmp al,10 jae abovenine mov dl,al add dl,’0’ jmp endifabovenine: mov dl,al add al,’A’-10endif:

if AL<10 then DL:=AL+’0’else DL:=AL+’A’-10;

EXAMPLEEXAMPLE

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

โค์รงสร-าง repeat-until

• โค์รงสร-าง repeat-until

• ร1ปแบบโปรแกรมภาษาแอสเซมบล��startlabel: actions ... actions if condition is false then jump to startlabel

ค์0าส�+ง

เง$+อน์ไข

ค์0าส�+ง

เท2จิจิร�ง

EXAMPLEEXAMPLEstartlabel:

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);

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

โค์รงสร-าง while

• โค์รงสร-าง while

• ร1ปแบบโปรแกรมภาษาแอสเซมบล��startlabel: if condition is false then jump to endlabel actions ... actions jump to startlabelendlabel:

EXAMPLEEXAMPLE

ค์0าส�+ง

เง$+อน์ไข

ค์0าส�+ง

เท2จิจิร�ง

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 startloopendloop:

while (DL<>13) and (CX<20) do begin AX:=AX+DL; BX:=BX+1; DL:=DATA[BX] CX:=CX+1; end;

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

โค์รงสร-าง for

• โค์รงสร-าง for

• ร1ปแบบโปรแกรมภาษาแอสเซมบล��– ไม#ใช-ค์0าส�+ง LOOP : ย"#งยากใน์การใช-

– ใช-ค์0าส�+ง LOOP : สะดวกกว#า แต#ไม#สามารถใช-ใน์การวน์รอบท�+ซ�บซ-อน์ได-

เท2จิ

ค์0าส�+ง

ค์#าของต�วแปรอย1#ใน์ขอบเขต

ค์0าส�+งจิร�ง

ก0าหน์ดค์#าเร�+มต-น์

ปร�บค์#าต�วแปร

initialize index variablestartloop: if index value is not in the range then jump to endloop action ... action update index variable jump to startloopendloop:

set the value of CXstartloop: actions LOOP startloop

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

EXAMPLEEXAMPLE

โค์รงสร-าง forEXAMPLEEXAMPLE mov cx,0

mov dl,1startloop: 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 startloopendloop:

CX:=0;for DL:=1 to 100 do begin if DL mod 7 = 0 then CX:=CX+1; end;

• โครงสร�างการทำางานของคาส��ง LOOPZ และ LOOPNZ ม�ล�กษณะปน์ก�น์ระหว#างโค์รงสร-าง for และ repeat

mov ax,0 mov cx,100startloop: 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);

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

ต�วอย#าง• จิงเข�ยน์โปรแกรมตรวจิสอบเลข

ฐาน์ส�บท�+ร �บค์#าจิากผ1-ใช- ( ไม#เก�น์ 8 บ�ต) ว#าเป7น์จิ0าน์วน์เฉพิาะหร$อไม#.– อ#าน์ต�วเลขฐาน์ส�บจิากผ1-ใช-

• ใช- Function หมายเลข 0Ah ใน์การอ#าน์ข-อค์วาม

• แปลงให-เป7น์ต�วเลข– ตรวจิสอบว#าเป7น์จิ0าน์วน์เฉพิาะหร$อ

ไม#• ทดลองหาร

• การอ#าน์ข-อค์วาม.datamaxlen db 4strlen db ?str db 4 dup (?)

.code mov ax,@data mov ds,ax

mov dx,offset maxlen mov ah,0Ah int 21h

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

แปลงต�วเลข• ต�วอย#างการแปลง

– ‘สมม"ต�ว#าผ1-ใช-ป9อน์ 123’ ข-อม1ล ใน์หน์#วยค์วามจิ0าจิะม�ค์#าเป7น์ :

• การแปลง :

123 = 1*102 + 2*10 + 3

= (((0*10 + 1) *10 + 2)*10 + 3)

43

‘1’‘2’‘3’13

maxlenstrlenstr

0 * 10 + 1 * 10

+ 2 * 10 + 3

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

แปลงต�วเลข 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

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

204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา

ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง

จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล

ทดสอบว#าเป7น์จิ0าน์วน์เฉพิาะ

• การทดสอบ– ใช- 2 - (al-1) หาร mov cl,al mov ch,0 sub cx,2 ;cx=al-2

mov dl,al mov bl,2primetest: mov al,dl mov ah,0 div bl inc bl cmp bl,0 loopnz primetest

jz notprime; print yes

notprime:; print no