1. Trang chủ
  2. » Công Nghệ Thông Tin

Ngôn ngữ hệ thống A

227 228 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 227
Dung lượng 5,63 MB

Nội dung

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

w