บทที่ 10 โครงสร้างควบคุม
DESCRIPTION
บทที่ 10 โครงสร้างควบคุม. โครงสร้างการตัดสินใจแบบ if-then-else โครงสร้างการกระทำซ้ำแบบ repeat-until โครงสร้างการกระทำซ้ำแบบ while โครงสร้างการกระทำซ้ำแบบ for. เงื่อนไข. จริง. เท็จ. คำสั่ง. คำสั่ง. cmp al,10 jae abovenine mov dl,al add dl, ’ 0 ’ - PowerPoint PPT PresentationTRANSCRIPT
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
บทท�+ 10 โค์รงสร-างค์วบค์"ม
• โค์รงสร-างการต�ดส�น์ใจิแบบ if-then-else
• โค์รงสร-างการกระท0าซ0�าแบบrepeat-until
• โค์รงสร-างการกระท0าซ0�าแบบwhile
• โค์รงสร-างการกระท0าซ0�าแบบ for
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
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);
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;
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
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);
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
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
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
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