Ngôn ngữ hệ thống A

227 228 0
Ngôn ngữ hệ thống A

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRNG I HC CN TH KHOA CÔNG NGH THÔNG TIN VÀ TRUYN THÔNG B MÔN VIN THÔNG & K THUT IU KHIN Giáo trình NGÔN NG H THNG A Biên son: ThS. Nguyn Ha Duy Khang Ks. Trn Hu Danh -HCT- 10-2006 Ngôn Ng H Thng A Ni dung NI DUNG NI DUNG GII THIU MÔN HC 1 1. i tng môn hc .1 2. Ni dung ct lõi 1 3. Kin thc liên quan .2 4. Danh mc tài liu tham kho 2 PHN A - NGÔN NG C Chng 1 – C BN V NGÔN NG C 3 1. Tng quan v ngôn ng lp trình C 3 2. Câu lnh 4 1.1. Khái nim câu lnh 4 1.2. Phân loi 4 3. Các lnh đn .4 3.1. Lnh gán 4 3.2. Lnh nhp giá tr t bàn phím cho bin (hàm scanf) . 6 3.3. Lnh xut giá tr ca biu thc lên màn hình (hàm printf) 8 4. Bài tp .10 4.1. Mc đích yêu cu .10 4.2. Ni dung 10 Chng 2 - CÁC LNH CÓ CU TRÚC 12 1. Khi lnh 12 2. Cu trúc r nhánh 14 3. Cu trúc la chn 19 4. C u trúc vòng lp 23 4.1. Vòng lp for . 23 4.2. Vòng lp while 25 4.3. Vòng lp do… while .28 4.4. So sánh các vòng lp . 30 5. Các câu lnh đc bit 30 6. Bài tp .31 6.1 Mc đích yêu cu 31 6.2 Ni dung .31 Chng 3 - HÀM và CU TRÚC CHNG TRÌNH .34 1. Khái nim v hàm trong C 34 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh i Ngôn Ng H Thng A Ni dung 1.1. Hàm th vin .35 1.2. Hàm ngi dùng 36 2. Xây dng mt hàm .36 2.1 nh ngha hàm 36 2.2 S dng hàm . 37 2.3 Nguyên tc hot đng ca hàm 38 3. Truyn tham s cho hàm 38 4. Hàm đ quy .41 4.1. nh ngha . 41 4.2. c đim cn lu ý khi vit hàm đ quy . 42 5. Bài tp .42 5.1 Mc đích yêu cu 42 5.2 Ni dung .42 Chng 4 - KIU MNG VÀ CON TR 44 1. Gii thiu kiu d liu “kiu mng” trong C .44 2. Mng m t chiu 44 2.1. Khai báo . 44 2.2 Truy xut tng phn t ca mng . 45 3. Mng nhiu chiu . 48 3.1 Khai báo 48 3.2 Truy xut tng phn t ca mng 2 chiu 49 4. Gii thiu kiu d liu con tr 51 5. Khai báo và s dng bin con tr . 52 5.1. Khai báo bin con tr 52 5.2. Các thao tác trên con tr 52 6. Con tr và mng . 56 6.1 Con tr và mng 1 chiu .56 6.2 Con tr và mng nhiu chiu 59 7. Con tr và tham s hình thc ca hàm . 60 8. Bài tp .62 8.1 Mc đích yêu cu 62 8.2 Ni dung .62 Chng 5 - CHUI KÝ T VÀ CÁC HÀM X LÝ CHUI . 64 1. Khái nim .64 2. Khai báo 64 2.1 Khai báo theo mng 64 2.2 Khai báo theo con tr . 64 2.3 Va khai báo va gán giá tr 64 3. Các thao tác trên chui ký t 65 3.1. Nhp xut chui .65 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh ii Ngôn Ng H Thng A Ni dung 3.2 Mt s hàm x lý chui (trong string.h) .66 4. Bài tp .69 4.1 Mc đích yêu cu 69 4.2 Ni dung .69 Chng 6 - KIU CU TRÚC 71 1. Kiu cu trúc trong C .71 1.1 Khái nim . 71 1.2 nh ngha kiu cu trúc . 71 1.3 Khai báo bin cu trúc 73 2. Các thao tác trên bin kiu cu trúc 73 2.1 Truy xut đn tng trng ca bin cu trúc .73 2.2 Khi to cu trúc 76 3. Con tr cu trúc 76 3.1 Khai báo 76 3.2 S dng các con tr kiu cu trúc 76 3.3 Truy cp các thành phn c a cu trúc đang đc qun lý bi con tr .76 4. Bài tp .77 4.1 Mc đích yêu cu 77 4.2 Ni dung .77 Chng 7 - KIU TP TIN 79 1. Mt s khái nim v tp tin 79 2. Các thao tác trên tp tin 80 2.1. Khai báo bin tp tin 80 2.2. M tp tin 80 2.3. óng tp tin .81 2.4. Kim tra đn cui tp tin hay cha? 81 2.5 Di chuyn con tr tp tin v đu tp tin - Hàm rewind() 81 3. Truy cp tp tin vn bn . 81 3.1. Ghi d liu lên t p tin vn bn 81 3.2. c d liu t tp tin vn bn .83 4. Truy cp tp tin nh phân 84 4.1 Ghi d liu lên tp tin nh phân - Hàm fwrite() 84 4.2 c d liu t tp tin nh phân - Hàm fread() 84 4.3 Di chuyn con tr tp tin - Hàm fseek() .84 4.4 Ví d .85 5. Bài tp .88 5.1 Mc đích yêu cu 88 5.2 Ni dung .88 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iii Ngôn Ng H Thng A Ni dung PHN B – HP NG (ASSEMBLY) Chng 1 - T CHC B X LÝ INTEL-8086 . 89 1.1. B x lý Intel-8086 (CPU-8086) .89 1.1.1. Cu trúc tng quát 89 1.1.2. Các thanh ghi ca 8086 90 1.1.3. Trng thái tràn: .93 1.2. B nh trong ca Intel-80x86 93 1.2.1. T chc d liu . 93 1.2.2. S phân đon b nh trong .94 1.3. a ch các ngoi vi .95 1.4. Các b x lý Intel khác 96 1.4.1. B x lý Intel-80386 .96 1.4.2. Tp thanh ghi ca b x lý Intel-80386: 96 1.4.3. Các ch đ vn hành ca b x lý Intel-80386 97 1.4.4. B x lý Intel-80486: . 98 1.4.5. B x lý Intel PENTIUM: 99 BÀI TP CHNG 1 . 101 Chng 2 - HP NG .103 2.1. Ngôn ng máy và hp ng 103 2.2. c tính tng quát ca hp ng .104 2.2.1. Cu trúc ca mt dòng lnh hp ng. 104 2.2.2. Macro 105 2.2.3. Chng trình con 105 2.2.4. Bin toàn cc (global), bin đa phng (local) . 106 2.2.5. Các bng, thông báo: 106 2.2.6. Hp ng chéo (cross assembler) 107 2.3. Hp ng MASM (hp ng ca CPU-8086) 107 2.3.1. Cu trúc ca mt hàng lnh 107 2.3.2. Tên 107 2.3.3. T gi nh mã lnh, l nh gi 108 2.3.4. Toán hng và toán t 115 2.4. Cu trúc ca chng trình hp ng MASM 118 2.4.3. Tp tin thi hành dng COM và dng EXE .119 2.4.4. Ví d .120 2.5. Cách to chng trình hp ng .121 Chng 3 - TP LNH CPU-8086 N GIN và KIU NH V 124 3.1. Tp lnh ca CPU-8086 124 3.1.1. Lnh sao chép d liu, đa ch: .124 3.1.2. Lnh tính toán s hc. 126 3.1.3. Nhóm lnh logic và ghi dch 127 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iv Ngôn Ng H Thng A Ni dung 3.1.4. Nhóm lnh vào ra ngoi vi. 130 1.3.5. Nhóm lnh h thng .131 3.2. Kiu đnh v . 131 3.2.1. nh v tc thì: 131 3.2.2. nh v thanh ghi 132 3.1.3. nh v trc tip (b nh): 132 3.1.4. nh v gián tip thanh ghi . 132 3.1.5. nh v nn . 133 3.1.6. nh v ch s 133 3.1.7. nh v ch s nn .134 3.1.8. nh v chui 134 3.1.9. nh v cng vào/ra 135 BÀI TP CHNG 3 . 135 Chng 4 - H  THNG NGT MM 138 4.1. Nhng c s ca ngt mm .138 4.2. S dng ngt trong hp ng 138 4.3. Ngt MS-DOS . 139 4.4 Các ví d .144 Chng 5 - LNH NHY VÀ VÒNG LP .148 5.1. Lnh nhy (chuyn điu khin) .148 5.1.1. Lnh nhy không điu kin 148 5.1.2. Lnh nhy có điu kin: .149 5.2. Vòng lp 152 BÀI TP CHNG 5 . 155 Chng 6 - NGN XP VÀ CHNG TRÌNH CON .157 6.1. Ng n xp 157 6.1.1. T chc và vn hành . 157 6.1.2. Truy xut ngn xp .158 6.2. Chng trình con . 159 6.2.1. Khai báo chng trình con (Th tc) .159 6.2.3. Gi th tc 160 6.3. Các ví d 160 BÀI TP CHNG 6 . 164 Chng 7 - X LÝ KÝ S VÀ X LÝ CHUI . 164 7.1. X lý ký t .165 7.1.1. Nhp xut s nh phân (Binary) 165 7.1.2. Nhp xut s thp lc phân (Hexa) 166 7.2. X lý chui 167 7.2. Lnh x lý chui 167 7.2.1. Hng x lý chui 168 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh v Ngôn Ng H Thng A Ni dung 7.2.2. Các tin t lp REP (Repeat) 168 7.2.3. Lnh Ghi vào chui 169 7.2.4. Lnh Np t chui 170 7.2.5. Lnh di chuyn chui .170 7.2.6. Lnh So sánh hai chui .172 7.2.7. Lnh dò tìm trong chui .174 BÀI TP CHNG 7 . 176 Ph lc 1 – Môi trng biên dch TURBO C 3.0 177 Ph lc 2 - Hng Dn S Dng Emu8086 .187 Ph lc 3 - Môi trng phát trin hp ng RadASM 192 Ph lc 4 Complete 8086 instruction set 196 Ph lc 5 – Bng mã ASCII .220 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh vi GII THIU MÔN HC I. MC ÍCH YÊU CU Môn Ngôn Ng H Thng A (TH407) cung cp cho sinh viên nhng kin thc c bn v lp trình h thng trên máy tính thông qua ngôn ng lp trình C và Hp Ng (Assembly). Môn hc này là nn tng đ tip thu hu ht các môn hc khác trong chng trình đào to. Mt khác, nm vng ngôn ng C là c s đ phát trin các ng dng. Hc xong môn này, sinh viên phi nm đc các vn đ sau: - Tng quan v Ngôn ng  lp trình C. - Các kiu d liu trong C. - Các lnh có cu trúc. - Cách thit k và s dng các hàm trong C. - Mt s cu trúc d liu trong C. - T chc b x lý Intel-8086 - Cu trúc chng trình Hp ng - Tp lnh ca Intel-8086 - H thng ngt mm trên máy tính IBM/PC - Lnh nhy và vòng lp trong Hp ng - Ngn xp và Th tc - X lý s và Chui II. I TNG MÔN HC Môn hc đc dùng đ ging dy cho các sinh viên sau: - Sinh viên nm th 3 chuyên ngành Tin hc, Toán Tin, Lý Tin - Sinh viên nm th 3 chuyên ngành in t (Vin thông, iu khin…) III. NI DUNG CT LÕI Trong khuôn kh 45 tit, cu trúc giáo trình đc t chc thành 2 phn chính: - Phn A trình bày các ni dung c bn ngôn ng lp trình C, các câu lnh, các kiu d liu…. - Phn B trình bày cu trúc b x lý Intel-8086 và các vn đ v lp trình Hp ng trên máy tính IBM/PC PHN A: Ngôn ng C (15 tit) Chng 1: C bn v Ngôn ng C Chng 2: Các lnh r nhánh và vòng lp Chng 3: Hàm và cu trúc chng trình Ch ng 4: Mãng và con tr Chng 5: Chui và các hàm x lý chui Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 1 Ngôn Ng H Thng A Gii thiu môn hc Chng 6: Kiu d liu cu trúc Chng 7: Truy xut tp tin PHN B: Hp Ng (30 tit) Chng 1: T chc b x lý Intel-8086 Chng 2: Hp ng Chng 3: Tp lnh và Kiu đnh v Chng 4: H thng ngt mm Chng 5: Lnh nhy và Vòng lp Chng 6: Ngn xp và Chng trình con Chng 7: X lý s và Chui IV. KIN THC LIÊN QUAN  hc tt môn Ngôn Ng H Thng A, sinh viên cn phi có các kin thc nn tng sau: - Kin thc K thut s. - Kin thc Kin trúc máy tính - Kin thc Ngôn ng lp trình cp cao: Pascal, Delphi . - K nng thao tác s dng máy tính. V. DANH MC TÀI LIU THAM KHO [1] Nguyn Vn Linh, Lâm Hoài Bo, Dng Vn Hiu, Giáo trình Lp trình cn bn A, Khoa Công Ngh Thông Tin, i hc Cn Th, 2005. [2] Nguyn ình Tê, Hoàng c Hi , Giáo trình lý thuyt và bài tp ngôn ng C; Nhà xut bn Giáo dc, 1999. [3] Nguyn Cn, C – Tham kho toàn din, Nhà xut bn ng Nai, 1996. [4] Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall Publisher, 1988. [5] Võ Vn Chín, Bài ging Ngôn ng h thng, Khoa Công Ngh Thông Tin, i hc Cn Th , 1994. Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 2 Chng 1 C BN V NGÔN NG C Ni dung chng 1 trình bày các vn đn nh sau: • Tng quan v ngôn ng lp trình C. • Câu lnh là gì? • Cách s dng câu lnh gán giá tr ca mt biu thc cho mt bin. • Cách s dng lnh scanf đ nhp giá tr cho bin. • Cách s dng lnh printf đ xut giá tr ca biu thc lên màn hình và cách đnh dng d liu. 1. TNG QUAN V NGÔN NG LP TRÌNH C C là ngôn ng lp trình cp cao, đc s dng rt ph bin đ lp trình h thng cùng vi Hp ng (Assembly) và phát trin các ng dng. Vào nhng nm cui thp k 60 đu thp k 70 ca th k XX, Dennish Ritchie (làm vic ti phòng thí nghim Bell) đã phát trin ngôn ng lp trình C da trên ngôn ng BCPL (do Martin Richards đa ra vào nm 1967) và ngôn ng B (do Ken Thompson phát trin t ngôn ng BCPL vào nm 1970 khi vit h  điu hành UNIX đu tiên trên máy PDP-7) và đc cài đt ln đu tiên trên h điu hành UNIX ca máy DEC PDP-11. Nm 1978, Dennish Ritchie và B.W Kernighan đã cho xut bn quyn “Ngôn ng lp trình C” và đc ph bin rng rãi đn nay. u tiên, C đc thit k nhm lp trình trong môi trng ca h điu hành Unix nhm mc đích h tr cho các công vic lp trình phc tp. Nhng v sau, vi nhng nhu cu phát trin ngày mt tng ca công vic lp trình, C đã vt qua khuôn kh ca phòng thí nghim Bell và nhanh chóng hi nhp vào th gii lp trình đ ri các công ty lp trình s dng mt cách rng rãi. Sau đó, các công ty sn xut phn mm ln lt đa ra các phiên bn h tr cho vic lp trình bng ngôn ng C và chun ANSI C cng đc khai sinh t đó. Ngôn ng lp trình C là m t ngôn ng lp trình h thng rt mnh và rt “mm do”, có mt th vin gm rt nhiu các hàm (function) đã đc to sn. Ngi lp trình có th tn dng các hàm này đ gii quyt các bài toán mà không cn phi to mi. Hn th na, ngôn ng C h tr rt nhiu phép toán nên phù hp cho vic gii quyt các bài toán k thut có nhiu công thc phc t p. Ngoài ra, C cng cho phép ngi lp trình t đnh ngha thêm các kiu d liu tru tng khác. Tuy nhiên, điu mà ngi mi va hc lp trình C thng gp “rc ri” là “hi khó hiu” do s “mm do” ca C. Dù vy, C đc ph bin khá rng rãi và đã tr thành mt công c lp trình khá mnh, đc s dng nh là mt ngôn ng lp trình ch y u trong vic xây dng nhng phn mm hin nay. Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 3 [...]... main () { int thang; clrscr(); printf("\n Nhap vao thangs trong nam "); scanf("%d",&thang); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 22 Ngôn Ng H Th ng A case 12: printf("\n break; case 4: case 6: case 9: case 11: printf("\n break; case 2: printf ("\ break; default : printf("\n break; Các l nh có c u trúc trong C Thang %d co 31 ngay... nghich dao cua a #include #include int main () { float a; printf("Nhap a = "); scanf("%f", &a) ; if (a !=0 ) printf("Nghich dao cua %f la %f" ,a, 1 /a) ; else printf(“Khong the tim nghich dao cua a ); getch(); return 0; } Gi i thích: - N u chúng ta nh p vào a 0 thì câu l nh printf("Nghich dao cua %f la %f" ,a, 1 /a) c th c hi n, ng c l i câu l nh printf(“Khong the tim duoc nghich dao cua a )... n sau” i u ki n if Ví d 2: Yêu c u ng i ch y ch ng trình nh p vào giá tr c a 2 s a và b, n u a l n h n b thì in ra thông báo “Gia tr c a a l n h n giá tr c a b”, sau ó hi n th giá tr c th c a 2 s lên màn hình #include #include int main () { int a, b; printf("Nhap vao gia tri cua 2 so a, b!"); scanf("%d%d", &a, &b); if (a> b) { printf("\n Gia tri cua a > b"); printf("\n a= %d, b=%d" ,a, b);... Ký t có mã ACSII trong h bát phân là s ddd Ký t có mã ACSII trong h th p l c phân là HHH Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 9 Ngôn Ng H Th ng A C b n v ngôn ng C Ví d : #include #include int main() { clrscr(); printf("\n Tieng Beep \a" ); printf("\n Doi con tro sang trai 1 ky tu\b"); printf("\n Dau Tab \tva dau backslash \\"); printf("\n Dau nhay don \' va dau nhay kep \"");... printf("Nhap vao gia tri cua 2 so a va b !"); scanf("%d%d", &a, &b); if (a> b) { printf("\n a lon hon b”); printf("\n a= %d b=%d " ,a, b); } else { printf("\n a nho hon hoac bang b"); printf("\n a= %d b=%d" ,a, b); } printf("\n Thuc hien xong lenh if"); getch(); return 0; } Gi i thích: - N u chúng ta nh p vào 40 30 thì k t qu hi n ra trên màn hình là a lon hon b a= 40 b=30 Thuc hien xong lenh if - Còn n u chúng ta nh... #include int main () { float a; Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 14 Ngôn Ng H Th ng A Các l nh có c u trúc trong C printf("Nhap a = "); scanf("%f", &a) ; if (a !=0 ) printf("Nghich dao cua %f la %f" ,a, 1 /a) ; getch(); return 0; } Gi i thích: - N u chúng ta nh p vào a 0 thì câu l nh printf("Nghich dao cua %f la %f" ,a, 1 /a) c th c hi n, ng c l i câu l nh này không c th c hi n - L... H a Duy Khang, Ks Tr n H u Danh 16 Ngôn Ng H Th ng A Các l nh có c u trúc trong C Ví d 2: Yêu c u ng i ch y ch ng trình nh p vào giá tr c a 2 s a và b, n u a l n h n b thì in ra thông báo “Gia tr c a a l n h n giá tr c a b, giá tr c a 2 s ”, ng c l i thì in ra màn hình câu thông báo “Giá tr c a a nh h n ho c b ng giá tr c a b, giá tr c a 2 s ” #include #include int main () { int a, ... break; case '-': printf("\n %d - %d =%d",so1, so2, so1-so2); break; Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 21 Ngôn Ng H Th ng A Các l nh có c u trúc trong C case '*': printf("\n %d * %d =%d",so1, so2, so1*so2); break; case '/': if (so2!=0) { thuong=float(so1)/float(so2); printf("\n %d / %d =%f", so1, so2, thuong); } else printf("Khong chia duoc cho 0"); break; default : printf("\n pheptoan); Chua... include int main(){ int float bien_nguyen=1234, i=65; bien_thuc=123.456703; printf(“Gia tri nguyen bien_nguyen); cua printf(“Gia tri bien_thuc); cua thuc bien bien nguyen =%d\n”, thuc =%f\n”, printf(“Truoc khi lam tron=%f \n Sau tron=%.2f”,bien_thuc, bien_thuc); khi lam return 0; } K t qu in ra màn hình nh sau: Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 8 Ngôn Ng H Th ng A C b n v ngôn ng C N u ta thêm vào... vi CV = a+ b+c Di n tích S = sqrt(p*(p -a) *(p-b)*(p-c)) Trong ó: p=CV/2 In các k t qu lên màn hình 4 Vi t ch ng trình tính logax v i a, x là các s th c nh p vào t bàn phím, và x>0, a> 0, a != 1.( dùng logax=lnx/lna) 5 Vi t ch ng trình nh p vào t a c a hai i m (x1, y1) và (x2, y2) a) Tính h s góc c a ng th ng i qua hai i m ó theo công th c: H s góc = (y2 - y1) /(x2 - x1) b) Tính kho ng cách gi a hai i m . backslash \"); printf(" Dau nhay don ' va dau nhay kep ""); printf(" Dau cham hoi ?"); printf(" Ky tu co ma. phát trin ngôn ng lp trình C d a trên ngôn ng BCPL (do Martin Richards đ a ra vào nm 1967) và ngôn ng B (do Ken Thompson phát trin t ngôn ng BCPL

Ngày đăng: 06/11/2013, 08:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan