บทที่ 8 : การประกาศข้อมูล
DESCRIPTION
บทที่ 8 : การประกาศข้อมูล. รูปแบบในการประกาศข้อมูล การอ้างใช้ข้อมูล การประกาศข้อมูลสำหรับการเรียกใช้งานบริการของ DOS หมายเลข 09h และ 0Ah. i :. j :. ch :. การประกาศข้อมูลหรือตัวแปร. ข้อมูลที่โปรแกรมใช้ และ ตัวแปรต่าง ๆ ที่อยู่ในหน่วยความจำ เป็นสิ่งเดียวกัน. การประกาศข้อมูล = - PowerPoint PPT PresentationTRANSCRIPT
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
บทท�+ 8 : การประกาศข้-อม.ล
• ร.ปแบบใน์การประกาศข้-อม.ล• การอ-างใช-ข้-อม.ล• การประกาศข้-อม.ลส0าหร�บการเร�ยก
ใช-งาน์บร�การข้อง DOS หมายเลข้09h และ 0Ah
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การประกาศข้-อม.ลหร$อต�วแปร
• ข้-อม.ลท�+โปรแกรมใช- และ ต�วแปรต#าง ๆ ท�+อย.#ใน์หน์#วยค์วามจิ0า เป3น์ส�+งเดี�ยวก�น์.
• การประกาศข้�อมู�ล = – การระบ"ให- assembler จิองเน์$�อท�+ใน์
หน์#วยค์วามจิ0าไว-ใช-ส0าหร�บการเก6บข้-อม.ล– และต��งช$+อให-ก�บหน์#วยค์วามจิ0าต0าแหน์#ง
น์��น์ (สร-างเลเบล)
• ต�วอย#างการประกาศต�วแปรแบบเลข้จิ0าน์วน์เต6ม 16 บ�ต 2 ต�ว (i, j) และอ�กข้ระ 1 ไบต� (ch)
i :
j :
ch :
จิะเป3น์การจิองเน์$�อท�+ใน์หน์#วยค์วามจิ0าข้น์าดี 5 ไบต� โดียจิะม�เลเบล i j และ ch ช��ต0าแหน์#งดี�งร.ป
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
ค์0าส�+งเท�ยมส0าหร�บการจิองเน์$�อท�+ใน์หน์#วยค์วามจิ0า
• เราใช-ค์0าส�+งเท�ยมใน์การระบ"ก�บassembler ว#าจิะต-องการหน์#วยค์วามจิ0าข้น์าดีหน์#วยละเท#าใดี.
• ค์0าส�+งต#าง ๆ
ระบ"ข้น์าดีข้องหน์#วยย#อยข้องการจิองหน์#วยค์วามจิ0า
• ต�วอย#างข้องการจิองหน์#วยค์วามจิ0า
DBDWDDDQDT
Define ByteDefine WordDefine DoublewordDefine QuadwordDefine Tenbytes
dseg segmentdata1 db 1,?data2 dw 1,2data3 db ’Hi’,10,13data4 dd 1234hdseg ends
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การจิ�ดีเร�ยงค์#าใน์หน์#วยค์วามจิ0า
01h
?01h
00h
02h
00h
48h
69h
0Ah
0Dh
34h
12h
00h
00h
dseg : 000000010002000300040005
0006000700080009000A000B000C000D
db 1,?data1data1
data2data2
data3data3
data4data4
dw 1,2
db ’Hi’,10,13
dd 1234h
ส�งเกตว#าใน์การประกาศ data1 ไบต�ท�+สอง เราใช- ‘เค์ร$+องหมาย ?’ ใน์การระบ"การจิองเน์$�อท�+หน์#วย
ค์วามจิ0าโดียไมู�ระบุ�ค่�าข้องข้-อม.ล.
?
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การระบ"ค์#าข้องหน์#วยค์วามจิ0า
ท�+ม�การซ0�า• เราใช-ค์0าส�+งเท�ยม dup ใน์การระบ"ค์#าเร�+ม
ต-น์ท�+ม�การซ0�าก�น์หลายช"ดี.• ร.ปแบบ
• ต�วอย#างจิ0าน์วน์ซ0�า dup (ค์#าท�+ซ0�า)
data7 db 10 dup (0)data8 db 5 dup (4 dup (5))data9 db 4 dup (1, 2, 3 dup (4))data10 db 20 dup (?)
0 0 0 0 05 5 5 5
5
05
1 2 4 4 4 1 2 4 4 41 2 4 4 4 1 2 4 4 4? ? ? ?
??
data7
data9
data8
data10 ซ0�าซ0�า
ซ0�าซ0�าซ0�า
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การอ-างใช-ข้-อม.ลใน์หน์#วยค์วามจิ0า
• เราสามารถใช-เลเบลท�+ประกาศแทน์ต0าแหน์#งข้องม.ลใน์หน์#วยค์วามจิ0าไดี-ท�น์ท�. เราย�งสามารถอ-างหน์#วยค์วามจิ0าโดียค์�ดีส�มพิ�ทธ์�ก�บต0าแหน์#งข้อง เลเบลไดี-.
mov al,data1mov bx,data2mov data1,0mov [data2+2],1123hmov data1[1],22hmov cl,byte ptr data4
00h22h01h
00h
23h11h48h
69h
0Ah
0Dh
34h
12h
00h
00h
data1
data2
data3
data4
AL = 01hBX = 01hCL = 34h
ส�งเกตว#าใน์การก0าหน์ดีค์#า ค์งท�+ให-ก�บหน์#วยค์วามจิ0าน์��น์
เราไม#ต-องระบ"ข้น์าดีอ�ก เพิราะเราระบ"ตอน์ประกาศแล-ว. แต#ไม#จิ0าเป3น์ต-องใช-ข้-อม.ลตาม
ข้น์าดีท�+ระบ"เสมอไป โดียเราสามารถระบ"ข้น์าดีก0าก�บไปดี-วย.
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การอ-างใช-ข้-อม.ลใน์หน์#วยค์วามจิ0า
• การอ-างต0าแหน์#งข้องข้-อม.ล– ใช-ค์0าส�+งเท�ยม OFFSET
mov ax,data2 ;ค่�าในหน�วยค่วามูจำ�าmov bx,offset data2 ; ออฟเซ็�ตข้องข้�อมู�ล
• การใช-ร�จิ�สเตอร� BX ใน์การอ-างต0าแหน์#งข้-อม.ล
mov bx,offset data7 ; ออฟเซ็�ตข้องข้�อมู�ลmov byte ptr [bx],10mov byte ptr [bx+1],20
mov bx,2mov data7[bx],30mov data7[bx+1],40
•ใน์โปรแกรมช#วงแรก BX เก6บออฟเซ6ตข้อง DATA7 ไว- จิากน์��น์เราอ-างใช-หน์#วยค์วามจิ0าเท�ยบก�บ BX. •ใน์ส#วน์หล�งเราอ-างใช-หน์#วยค์วามจิ0าเท�ยบก�บ DATA7 และค์#าใน์BX.
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
ต�วอย#าง
dseg segmentdata1 db 1,2,3data2 db 3 dup (?)data3 dw 5,6dseg ends
01
02
03
?
?
?
05
00
06
00
DS:0000
DS:0001
DS:0003
DS:0004
DS:0005
DS:0006
DS:0007
DS:0008
DS:0009
DS:000A
จิากการประกาศข้-อม.ลต#อไปน์��
mov al,data1• AL = 01h
mov bx,offset data1• BX = 0000h
mov cx,data3[2]• CX = 0006h
mov bx,offset data2mov [bx],cx
• [DS:0004] = 06h• [DS:0005] = 00h
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การประกาศข้-อม.ลส0าหร�บ การใช-บร�การหมายเลข้
09h ข้อง DOSบุร การหมูายเลข้ 09h : แสดงผล
ข้�อค่วามู• ร�บข้-อม.ลผ#าน์ร�จิ�สเตอร�ดี�งน์��
– AH = 09h– DS : DX = ต0าแหน์#งข้องข้-อค์วามท�+
จิะแสดีง โดียข้-อค์วามน์��ต-องจิบดี-วยเค์ร$+องหมาย ‘$’
• เราสามารถประกาศข้-อม.ลไดี-ดี�งน์��
โดียรห�ส 10 (Line Feed) และ 13 (Carriage Return) เป3น์รห�สท�+ส� +งให-ข้:�น์บรรท�ดีใหม#.
• การส�+งพิ�มพิ�
dseg segmentmsg db ’hello’,10,13,’$’dseg ends
mov ah,9mov dx,offset msgint 21h
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การประกาศข้-อม.ลส0าหร�บ การใช-บร�การหมายเลข้
0Ah ข้อง DOSบุร การหมูายเลข้ 0Ah : อ�าน
ข้�อค่วามู• ร�บข้-อม.ลผ#าน์ร�จิ�สเตอร�ดี�งน์��
– AH = 09h– DS : DX = ต0าแหน์#งข้องหน์#วย
ค์วามจิ0าท�+จิะใช-เก6บข้-อม.ล (บ�ฟเฟอร�) โดียท�+จิะต-องม�ร.ปแบบดี�งน์��
• ไบุต%ที่'( 1 : ค์วามยาวข้องข้-อม.ลท��งหมดี (ต-องเผ$+อท�+ว#างไว- 1 ไบต�ส0าหร�บอ�กข้ระข้:�น์บรรท�ดีใหม#)
• ไบุต%ที่'( 2 : DOS จิะใส#ค์วามยาวข้-อม.ลจิร�งลงท�+หน์#วยค์วามจิ0าต0าแหน์#งน์��
• ไบุต%ต�อ ๆ ไป : ข้-อค์วามท�+อ#าน์ไดี-. เราต-องจิองเน์$�อท�+หน์#วยค์วามจิ0าให-เพิ�ยงพิอ
• ต�วอย#างข้องการประกาศข้-อม.ลเพิ$+อให-เข้�ยน์โปรแกรมไดี-สะดีวก
.datamaxlen db 30msglen db ?msg db 30 dup (?)
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
การประกาศข้-อม.ลส0าหร�บ การใช-บร�การหมายเลข้
0Ah ข้อง DOS
mov ah,0Ahmov dx,offset maxlenint 21h
บ�ฟเฟอร�
msglen
maxlen
msg
ใน์การส#งแอดีเดีรสข้องบ�ฟเฟอร�ไปย�ง DOS เราจิะส#งต0าแหน์#งข้อง maxlen ไปให- เพิ$+อให-ร.ปแบบข้องข้-อม.ลตรงตามข้-อก0าหน์ดี.• การเร�ยกใช-บร�การอ#าน์ข้-อค์วาม
• msglen จิะเก6บค์วามยาวข้องข้-อค์วามท�+อ#าน์ไดี-.• อ�กข้ระต#างใน์ข้-อค์วามจิะถ.กเก6บใน์หน์#วยค์วามจิ0าต��งแต# msg เป3น์ต-น์ไป.
204221 องค์�ประกอบค์อมพิ�วเตอร�และภาษาแอสเซมบล�� ภาค์ว�ชา
ว�ศวกรรมค์อมพิ�วเตอร� มหาว�ทยาล�ยเกษตรศาสตร�ส�ณฑิ�ต� พิ�ชรร" #งเร$อง
จิ�ตร�ท�ศน์� ฝั(กเจิร�ญผล
ต�วอย#างโปรแกรม• โปรแกรมท�+ร �บข้-อค์วามจิากผ.-ใช-
แล-วแสดีงข้-อค์วามน์��น์ออกมา.
• ร�บข้-อค์วาม– บร�การหมายเลข้ 0Ah
• แสดีงข้-อค์วาม– บร�การหมายเลข้ 09h
• ‘ข้-อค์วามต-องจิบดี-วย $’