Bai tap lon mon xu ly anh- thay HungFull description
Full description
Full description
Full description
BAI TAP CAD 3DFull description
a
TR ƯỜ ƯỜ NG NG ĐẠI ĐẠI HỌ HỌC C ẦN ẦN THƠ THƠ KHOA CÔNG NGHỆ NGHỆ BỘ MÔN ĐIỆN TỬ TỬ -- VIỄ VIỄN THÔNG
Giáo trình thự c hành
LẬP TRÌNH HỆ THỐNG Biên soạn:
ThS. Nguyễ Nguyễn Hứ Hứ a Duy Khang Ks. Tr ần ần Hữ Hữ u Danh
-ĐHCT5-2008
Thự c hành l ậ p trình hệ thố ng ng
NỘI DUNG Giớ i thiệu
BÀI 1: NHẬP MÔN HỢ P NGỮ .......................... ....................................... ........................... ........................... ....................... .......... 1 1. Mục tiêu .......................... ....................................... ........................... ........................... ........................... ........................... ........................... ................... ..... 1 2. Kiến thức cần chuẩn bị ........................... ......................................... ........................... ........................... ........................... ..................... ........ 1 3. Nội dung thực hành ......................... ....................................... ........................... ........................... ........................... ........................... ................ 1 3.1. Khảo sát lệnh Intel-8086 ........................... ......................................... ............................ ............................ ................. ... 1 3.2. Cấu trúc chươ ng ng trình dạng EXE ...................................... ................................................... ..................... ........ 1 3.3. Viết chươ ng ng trình đơ n giản .......................... ........................................ ........................... .......................... ............... .. 3 4. Bài tậ p đề nghị ........................... ........................................ ........................... ........................... ........................... ........................... ..................... ........ 3 BÀI 2: XUẤT NHẬP KÝ TỰ .......................... ....................................... ........................... ........................... ........................... .............. 5 1. Mục tiêu .......................... ........................................ ........................... .......................... ........................... ........................... ........................... ................... ..... 5 2. Kiến thức cần chuẩn bị ......................... ....................................... ........................... ........................... ........................... ....................... .......... 5 3. Nội dung thực hành .......................... ....................................... .......................... ........................... ........................... ........................... ................ 5 3.1. In một ký tự ra màn hình ................................. .............................................. ........................... .......................... ............ 5 3.2. In chuỗi ký tự ra màn hình ......................... ....................................... ........................... ........................... ................. ... 6 3.3. Nhận một ký tự từ bàn phím................... ................................ ........................... ........................... ..................... ........ 6 3.4. Nhận chuỗi ký tự từ bàn phím ............................... ............................................. ........................... ................... ...... 7 4. Bài tậ p đề nghị ........................... ........................................ ........................... ........................... ........................... ........................... ..................... ........ 8 BÀI 3: CẤU TRÚC R Ẽ NHÁNH – VÒNG L ẬP .......................... ....................................... ....................... .......... 9 1. Mục tiêu .......................... ....................................... ........................... ........................... ........................... ........................... ........................... ................... ..... 9 2. Tóm tắt lý thuy ết .......................... ....................................... .......................... .......................... .......................... .......................... .................... ....... 9 3. Nội dung thực hành ......................... ....................................... ........................... ........................... ........................... ........................... ................ 12 3.1. Cấu trúc r ẽ nhánh ............................ .......................................... ........................... ........................... ............................ .............. 12 3.2. Cấu trúc vòng lậ p .......................... ........................................ ........................... ........................... ........................... ................ ... 13 4. Bài tậ p đề nghị ........................... ........................................ ........................... ........................... ........................... ........................... ..................... ........ 13 BÀI 4: NHẬP XUẤT SỐ DẠNG BIN-HEX-DEC ................. .............................. ........................... ................. ... 15 1. Mục tiêu .......................... ........................................ ........................... .......................... ........................... ........................... ........................... ................... ..... 15 2. Kiến thức cần chuẩn bị ......................... ....................................... ........................... ........................... ........................... ....................... .......... 15 3. Nội dung thực hành .......................... ....................................... .......................... ........................... ........................... ........................... ................ 15 3.1. Nhậ p xuất số nhị phân .......................... ....................................... .......................... ........................... ........................ .......... 15 3.2. Nhậ p xuất số thậ p lục phân ........................... ........................................ ........................... ........................... ............... 16 3.3. Xuất số thậ p phân nguyên d ươ ng ng ........................... ......................................... ........................... .................. ..... 18 4. Bài tậ p đề nghị ........................... ........................................ ........................... ........................... ........................... ........................... ..................... ........ 19 BÀI 5: XỬ LÝ TẬP TIN .......................... ........................................ ............................ ............................ ........................... .................... ....... 21 1. Mục tiêu .......................... ....................................... ........................... ........................... ........................... ........................... ........................... ................... ..... 21 2. Kiến thức cần chuẩn bị ........................... ......................................... ........................... ........................... ........................... ..................... ........ 21 3. Nội dung thực hành ......................... ....................................... ........................... ........................... ........................... ........................... ................ 21 3.1. Tạo tậ p tin m ớ i ......................... ....................................... ........................... ........................... ........................... ..................... ........ 21
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
i
Thự c hành l ậ p trình hệ thố ng ng 3.2. Ghi nội dung tậ p tin .............................. ............................................ ............................ ........................... ...................... ......... 22 3.3. Đọc nội dung tậ p tin ........................... ........................................ ........................... ............................ ......................... ........... 23 3.4. Xóa tậ p tin ........................... ......................................... ............................ ........................... ........................... ......................... ........... 25 25 3.5. Đổi tên tậ p tin ............................ .......................................... ........................... ........................... ............................ ................... ..... 26 4. Bài tậ p đề nghị ........................... ........................................ ........................... ........................... ........................... ........................... ..................... ........ 27
BÀI 6: XỬ LÝ CHUỖI KÝ TỰ ........................... ........................................ ........................... ........................... ....................... .......... 28 1. Mục tiêu .......................... ....................................... ........................... ........................... ........................... ........................... ........................... ................... ..... 28 2. Kiến thức cần chuẩn bị ........................... ......................................... ........................... ........................... ........................... ..................... ........ 28 3. Nội dung thực hành .......................... ....................................... .......................... ........................... ........................... ........................... ................ 28 3.1. So sánh chu ỗi........................... ........................................ .......................... .......................... .......................... ........................ ........... 28 3.2. Di chuyễn chuỗi......................... ...................................... .......................... .......................... ........................... ...................... ........ 30 3.3. Dò tìm trong chu ỗi .......................... ........................................ ........................... ........................... ........................... ............... 31
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
ii
Giớ i Thiệu Thực hành Lậ p trình Hệ Thống giúp cho sinh viên viết đượ c chươ ng ng trình bằng ngôn ngữ Assembly trên máy tính PC. Giáo trình này ch ỉ hướ ng ng d ẫn sinh viên những k ỹ năng r ất cơ bản trong việc lậ p trình bằng Assembly như: Sử dụng trình biên dịch hợ p ngữ trong môi tr ườ ng Windows, biên dịch, sửa lỗi và liên k ết, khảo sát tậ p lệnh, ườ ng các ngắt đơ n gi ản c ủa H ệ điều hành DOS. Để vận d ụng và nâng cao đượ c k ỹ năng lậ p trình hệ thống bằng Hợ p ng ữ, đòi hỏi sinh viên phải nổ lực r ất nhiều trong việc tự học, đọc thêm tài li ệu để bổ sung những kiến thức nhất định về phần cứng máy tính cũng như nguyên ly vận hành của các thiết bị ngoại vi có liên quan, nh ư: Máy in, h ệ vi điều khiển, cổng vào ra nối tiế p/ song song .... Thờ i lượ ng ng của môn học có giớ i hạn, nên các bài th ực hành đượ c tổ chức thành các chủ đề sau đây, mỗi chủ đề thực hành trong 1 bu ổi (5 tiết): Bài 1: Nhậ p môn hợ p ng ữ Bài 2: Xuất nhậ p ký tự. Bài 3: Cấu trúc r ẽ nhánh – Vòng lậ p Bài 4: Xử lý ký tự - Ký số Bài 5: Xử lý tậ p tin Bài 6: Nhậ p xuất số BIN-HEX-DEC
Để thực hành đạt hiệu quả cao, sinh viên cần phải chuẩn bị cho mỗi bài tr ướ ướ c khi vào bắt đầu thực hành. Muốn đạt đượ c điều này, sinh viên ph ải tuân th ủ phươ ng ng pháp học như sau: Trướ c khi vào th ự c hành: - Nắm đượ c mục tiêu của bài thực hành. - Xem lại các kiến thức cần chuẩn bị đượ c nêu ra cho m ỗi bài thực hành. - Nắm đượ c các n ội dung cần phải làm trong buổi thực hành. Trong khi th ự c hành: - Tuyệt đối tuân thủ thực hành theo th ứ tự của nội dung thực hành. Hoàn thành các vấn đề và tr ả lờ i đượ c các câu h ỏi đặt ra trong ph ần tr ướ ướ c mớ i chuyển sang thực hành phần sau. - Quan sát hiện tượ ng, ng, những thay đổi, xem xét đánh giá k ết qu ả sau mỗi thao tác th ực hành. - Lậ p lại các thao tác th ực hành nhiều lần, tìm cách giải quyết khác sau khi đã thực hành theo yêu cầu cho mỗi vẫn đề. So sánh, nhận xét các cách giải quyết khác nhau. Sau khi thự c hành: - Đối chiếu từng mục tiêu c ủa bài th ực hành vớ i những gì đã thực hành đượ c. c. Nếu mục tiêu nào ch ưa thành th ạo thì phải tìm cách l ậ p lại thực hành đó để nắm đượ c mục tiêu v ững chắc hơ n. n. Trong quá trình biên soạn, không thể tránh khỏi sơ xuất, hãy chân thành góp ý chỉnh sửa để giáo trình ngày càng hoàn ch ỉnh hơ n. n. Nguyễn Hứ a Duy Khang Email: [email protected]
ThS.
Bài 1 – Nh ậ p môn h ợ p ng ữ ữ
Bài 1: Nhập Môn Hợp Ngữ 1. MỤC TIÊU - Sử dụng đượ c công cụ Emu8086 để khảo sát các lệnh của Intel-8086. - Sử dụng đượ c các chức năng cơ bản của công cụ RadASM như: Soạn thảo, Hợ p dịch (Assemble), Liên k ết (Link) và Ch ạy chươ ng ng trình (Run). - Viết đúng cấu trúc của chươ ng ng trình hợ p ngữ dạng tái định (EXE). - Đọc hiểu và sửa lỗi chươ ng ng trình.
2. KIẾN THỨ C CẦN CHUẨN BỊ -
Các thao tác cơ bản trên hệ điều hành Windows. Cấu trúc chươ ng ng trình hợ p ngữ dạng EXE. Qui trình Soạn thảo – Dịch chươ ng ng trình. Các lệnh đơ n gi g iản của Intel-8086 thườ ng ng dùng như: MOV, ADD, SUB, INC, DEC, AND, OR. (Xem cú pháp trong giáo trình)
3. NỘI DUNG THỰ C HÀNH 3.1. Khảo sát lệnh Intel-8086: 3.1.1. Nhậ p vào Emu8086 đoạn lệnh sau đây và d ự đoán tr ướ ướ c k ết quả: MOV AH, 80 ; AH ← 80 (AX = ?) MOV AL, 86 ; AL ← 86 (AX = ?) MOV BX, AX ; BX ← AX (BH = ?, BL = ?) MOV DH, BL ; DH ← BL (DH = ?, DX = ?) MOV DL, BH ; DL ← BH (DL = ?, DX = ?) MOV SI, CS ; SI ← CS (SI = ?) Thực hi ện t ừng l ệnh, sau mỗi l ệnh ghi lại k ết qu ả các thanh ghi trong ngo ặc để đối chiếu vớ i k ết quả dự đoán trên và gi ải thích. 3.1.2. Thực hành tươ ng ng tự như câu 3.1.1 đối vớ i đoạn lệnh sau: MOV AX, 8086 ; AX ← 8086 (AH = ?, AL = ?) ADD AL, 3 ; AL ← AL + 3 (AL = ?, AX = ?) DEC AX ; AX ← AX – 1 (AH = ?, AL = ?, AX = ?) SUB AH, 10h ; AH ← AH – 10h (AH = ?, AL = ?, AX = ?) AND AX, 0FF0h ; AX ← AX and 0FF0h (AX = ?) 3.1.3. Sinh viên ch ủ động lậ p lại ít nhất 1 lần câu 3.1.1 và 3.1.2 v ớ i các giá tr ị toán hạng khác trong mỗi dòng lệnh.
3.2. Cấu trúc chươ ng ng trình dạng EXE: ng trình Hợ p ngữ sau đây: 3.1.1. [HELLO.ASM] Dùng RadASM để soạn thảo chươ ng Lư u ý: - Chươ ng ng trình hoàn toàn không có l ỗ i. i.
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
1
Bài 1 – Nh ậ p môn h ợ p ng ữ ữ - Trong đ ó có nhữ ng ng l ệnh mà sinh viên ch ư a học đế n, n, đ iề u này không cần quan tâm, đ iề u c ần quan tâm trong bài th ự c hành này là C ấ ấu trúc chươ ng ng trình h ợ p ng ữ ữ. - Đặ t tên file ch ươ ng ng trình ngu ồn là HELLO.ASM
DSEG SEGMENT ; Tạo đoạn DSEG chuoi DB “Hello World!$” ; Khai báo biến chuỗi DSEG ENDS CSEG SEGMENT ; Tạo đoạn CSEG ASSUME CS: CSEG, DS: DSEG ; CSEG là đoạn lệnh, DSEG là d ữ liệu begin: MOV AX, DSEG ; Khở i động địa chỉ đoạn dữ liệu MOV DS, AX MOV AH, 09h ; AH ← 09h LEA DX, chuoi ; DX ← địa chỉ offset biến chuoi INT 21h ; gọi ngắt 21h MOV AH, 01h ; AH ← 01h INT 21h ; gọi ngắt 21h MOV AH, 4Ch ; Thoát chươ ng ng trình INT 21h CSEG ENDS END begin a. Hợ p dịch chươ ng ng trình HELLO.ASM và kiểm tra xem file HELLO.OBJ đã đượ c tạo ra ch ưa. b. Liên k ết chươ ng ng trình HELLO, kiểm tra xem file HELLO.EXE đã đượ c tạo ra chưa c. Chạy chươ ng ng trình HELLO.EXE, quan sát trên màn hình, chươ ng ng trình trên làm gì? d. Thay đổi “Hello World!$” thành “Wellcome to Assembly$”. Làm l ại các bướ c a, b và c. Ch ươ ng ng trình trên làm gì? ng 3.2.2. [HELLO2.ASM] Sửa file HELLO.ASM ở trên sao cho giống hệt nh ư chươ ng trình sau và đặt tên lại là HELLO2.ASM (ch ỉ khác ở những chổ in nghiêng ) - Lư u ý: Chươ ng ng trình s ẽ có vài l ỗ ỗi
a. Dịch chươ ng ng trình HELLO2.ASM, ghi l ại các thông tin v ề lỗi: Số lỗi, những lỗi gì, trên dòng nào? b. Kiểm tra xem file HELLO2.OBJ đượ c tạo ra không? Tại sao? c. Sửa từng lỗi một từ dòng trên xuống, r ồi lậ p lại câu a cho đến khi nào hết lỗi. d. Liên k ết chươ ng ng trình HELLO2. Kiểm tra xem có file HELLO2.EXE không? e. Chạy chươ ng ng trình HELLO2.EXE, so sánh k ết quả vớ i 3.1.1.d
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
2
Bài 1 – Nh ậ p môn h ợ p ng ữ ữ
DSEG SEGMEMT ; Tạo đoạn DSEG chuoi DW “Wellcome to Assembly$” ; Khai báo biến chuỗi DSEG ENDS CSEG SEGMENT ; Tạo đoạn CSEG ASSUME CS: CSEG, DS: DSEG ; CSEG là đoạn lệnh, DSEG là d ữ liệu begin: MOV BX , SSEG ; Khở i động địa chỉ đoạn dữ liệu MOV DS, BX MOV AH, 09h ; AH ← 09h LEA DH , chuoi ; DX ← địa chỉ offset biến chuoi INT 21h ; gọi ngắt 21h MOV AH, 01h ; AH ← 01h INT 21h ; gọi ngắt 21h MOV AH, 4Ch ; Thoát chươ ng ng trình INT 21h CSEG ENDS END Begin
3.3. Viết các chươ ng ng trình đơ n giản: 3.3.1. [SUM1.ASM] Viết ch ươ ng ng trình dạng EXE để tính k ết qu ả biểu thức sau, lưu tr ữ k ết quả trong AX: 10 + 8086 - 100h + 350 + 0FAh Lư u ý: - Chỉ khai báo 1 đ oạn l ệnh để viế t chươ ng ng trình.
a. Dịch sửa lỗi (nế u có l ỗ ng trình. i ) và chạy chươ ng ỗi) b. Dùng Emu8086 để chạy chươ ng ng trình trên và ki ểm tra k ết quả lưu trong AX. 3.3.2. [SUM2.ASM] Viết ch ươ ng ng trình dạng EXE để tính k ết qu ả biểu thức có dạng tổng quát như sau: KQUA = A + B – C + D + E Trong đó: KQUA, A, B, C, D, E là các bi ến 2 byte khai báo trong đoạn dữ liệu. Lư u ý: - Chươ ng ng trình g ồm 2 đ oạn: Đoạn l ệnh và Đoạn d ữ ữ liệu dùng để chứ a các Biế n. n.
a. Gán giá tr ị các biến A = 1000, B = 10, C = 1Fh, D = 30h, E = 300Ah. D ịch và chạy chươ ng ng trình. b. Dùng Emu8086 để kiểm tra k ết quả của câu a. c. Áp d ụng SUM2.ASM để tính biểu th ức đã cho ở câu 3.3.1. Dùng Emu8086 để kiểm tra k ết quả.
4. BÀI TẬP ĐỀ NGHỊ: 4.1. Dùng Emu8086 để khảo sát các lệnh khác trong tậ p lệnh của Intel-8086. 4.2. Tự tìm hiểu thêm những chức năng khác của Emu8086 Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
3
Bài 1 – Nh ậ p môn h ợ p ng ữ ữ
4.3. Viết từng chươ ng ng trình tính các bi ểu thức sau: (Phải viế t theo kiể u sử d ụng biế n để chứ a toán h ạng và k ế ết quả , SV t ự đặ ự đặ t tên biế n theo ý c ủa mình)
a. 15h * 250
b. 16 * 0AF1h
d. 1000 ÷ 100 ÷ 100h e. 1000
c. 300 * 400 f. 3AB45Eh ÷ 0A1h 4.4. Sử dụng Emu8086 để kiểm chứng k ết quả của các chươ ng ng trình đã viết cho 4.3.
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
4
Bài 2 – Xu ấ t nhậ p ký t ự ự
Bài 2: Xuất Nhập Ký Tự 1. MỤC TIÊU - Sử dụng đượ c các ngắt m ềm để viết đượ c ch ươ ng ng trình: in ký t ự - chuỗi ký tự lên màn hình và nh ậ p ký t ự - chuỗi ký tự từ bàn phím. - Hiểu đượ c cách quản lý ký tự và ký số trong Hợ p ngữ. 2. KIẾ N THỨ C C ẦN CHU Ẩ N BỊ - K ết quả bài thực hành 1. -
Các hàm 01h, 02h, 06h, 07h, 08h, 09h, 0Ah c ủa ngắt 21h.
-
Bảng mã ASCII.
3.N 3.NỘI DUNG THỰ C HÀNH 3.1. In 1 ký tự ra nàm hình -
Chươ ng ng trình sử dụng hàm 2, ng ắt 21h để in ký tự B ra màn hình đượ c viết như sau. Hãy soạn thảo lưu lại thành tậ p tin nguồn có tên là BAI_2A.ASM . CSEG
SEGMENT ASSUME CS: CSEG
start:
mov ah, 02h
; Hàm 2, in 1 ký t ự ra màn hình
mov dl, ‘B’
; DL chứa ký tự cần in
int 21h
; gọi ngắt để thực hiện hàm
mov ah, 08h
; Hàm 08h, ng ắt 21h
int 21h mov ah, 4Ch
; Thoát khỏi chương trình
int 21h CSEG
ENDS END start
-
Dịch sửa lỗi (nếu có) và chạy chươ ng ng trình để xem k ết quả in ra màn hình.
-
Các dòng lệnh nào thực hiện chức năng in ký t ự ‘B’ ra màn hình? Các dòng lệnh khác dùng làm gì?
-
Sửa l ại chươ ng ng trình trên để in ra màn hình ký t ự ‘D’. Chạy chươ ng ng trình ki ểm chứng k ết quả.
-
Viết chươ ng ng trình để in ra màn hình s ố 9
-
Viết chươ ng ng trình để in ra màn hình s ố 89
-
Hai dòng lệnh 6 và 7 có ch ức năng gì trong ch ươ ng ng trình? Nếu không có 2 dòng lệnh ấy thì chươ ng ng trình th ực hiện như thế nào? (Thử xóa bỏ 2 dòng l ệnh ấ y r ồi chạ y chươ ng ng trình, quan sát k ế t quả để phát hi ện chứ c nă ng) ng)
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
5
Bài 2 – Xu ấ t nhậ p ký t ự ự
3.2. In chuỗi ký tự ra màn hình -
Muốn in 1 chuỗi ký tự ra màn hình thì s ử dụng hàm 9, ngắt 21h như chươ ng ng trình sau đây, hãy soạn thảo và đặt tên tậ p tin nguồn là BAI_2B.ASM .
-
Dịch, sửa lỗi (nếu có) và chạy chươ ng ng trình để xem k ết quả trên màn hình.
-
Viết lại chươ ng ng trình trên để in ra màn hình chu ỗi “Truong Dai Hoc Can Tho” .
-
Sửa khai báo biến chuoi có dạng như sau: chuoi DB ‘Truong Dai Hoc’, 10, 13, ‘Can Tho$’
-
Dịch và chạy chươ ng ng trình để xem k ết quả. Trong khai báo bi ến chuoi, 2 giá tr ị 10, 13 có ý ngh ĩ a gì trong việc in chuỗi ra màn hình.
-
Sửa lại chươ ng ng trình để in ra màn hình s ố 2006.
DSEG SEGMENT chuoi DB ‘Chao sinh vien nganh Cong Nghe Thong Tin.$’ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start:
mov ax, DSEG
mov ds, ax mov ah, 09h
; Hàm 9, in chuỗi ký tự ra màn hình
lea dx, chuoi
; dl chứa ký tự cần in
int 21h
; gọi ngắt thực hiện
mov ah, 08h int 21h mov ah, 4Ch
; thoát kh ỏi chương trình
int 21h CSEG ENDS END start
3.3. Nhận 1 ký tự từ bàn phím -
Chươ ng ng trình sau đây (trang 3) sẽ sử dụng hàm 01, ng ắt 21h để nhận 1 ký tự từ bàn phím. Soạn thảo và đặt tên tậ p tin ngu ồn là BAI_2C.ASM.
-
Dịch, sửa lỗi (nếu có) và chạy chươ ng ng trình, gõ phím c ần nhậ p. Quan sát k ết quả trên màn hình.
-
Ký tự đã nhậ p đượ c lưu tr ữ ở đ ở đâu và đượ c CPU quản lý ở dạng thức gì? (Dùng Emu8086 để khảo sát)
-
Sửa chươ ng ng trình để đọc ký tự bằng hàm 7, ngắt 21h.
-
Chạy chươ ng ng trình và so sánh ho ạt động giữa hàm 1 và hàm 7.
Chươ ng ng trình sử dụng hàm 0Ah, ng ắt 21h để nhậ p 1 chuỗi ký tự từ bàn phím viết như sau. Sinh viên so ạn thảo thành t ậ p tin chươ ng ng trình có tên là BAI_2D.ASM .
Dịch, sửa lỗi và thi hành ch ươ ng ng trình trong t ừng tr ườ ng hợ p sau đây: ườ ng 1. Nhậ p từ bàn phím chuỗi ít hơ n 30 ký tự. 2. Nhậ p từ bàn phím chuỗi nhiều hơ n 30 ký tự.
-
Giá tr ị biến len trong mỗi tr ườ ng hợ p là bao nhiêu? ườ ng
-
Tại sao không th ể nhậ p nhiều hơ n 30 ký t ự? Chuỗi ký tự nhậ p vào đượ c lưu tr ữ ở biến nào?
-
Sửa chươ ng ng trình để có thể nhậ p nhiều hơ n 30 ký t ự (60 ký tự chẳng hạn).
-
Tổng quát, khả năng t ối đa của hàm 0Ah, ngắt 21h là nhận chuỗi bao nhiêu ký tự?
4. BÀI T ẬP ĐỀ NGHỊ 4.1. Viết chươ ng ng trình sử dụng hàm 7, ng ắt 21h để nhận 1 ký tự từ bàn phím, dùng 1 biến để lưu tr ữ ký tự nhận đượ c (do sinh viên t ự đặt tên bi ến), sau đó sử dụng hàm 2, ngắt 21h để in ra màn hình ký t ự nhận đượ c đang lưu trong biến ấy. Chươ ng ng trình phải có đủ các câu thông báo nh ậ p và xu ất. Ví d ụ:
Hay go 1 phim: B Ky tu nhan duoc la: B
4.2. Sửa lại ch ươ ng ng trình 4.1 sao cho không c ần s ử dụng biến để lưu tr ữ ký t ự mà k ết quả chạy chươ ng ng trình vẫn không thay đổi. 4.3. Viết chươ ng ng trình nhận 1 ký tự từ bàn phím, sau đó in ra màn hình ký t ự k ế tr ướ ướ c và k ế sau của ký tự vừa nhậ p Ví d ụ:
Hay go 1 phim: B Ky tu ke truoc : A Ky tu ke sau : C
4.4. Viết chươ ng ng trình cho phép nh ậ p từ bàn phím tên c ủa 1 ngườ i, i, sao đó in ra màn hình chuỗi có dạng như sau: Xin chao Ví d ụ:
Khi chạy chươ ng ng trình, nh ậ p vào là: Nguyen Hua Duy Khang
Chuỗi in ra màn hình s ẽ là: Xin chao Nguyen Hua Duy Khang
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
8
Bài 3 – C ấ ấu trúc r ẽ ẽ nhánh – Vòng l ặ ặ p
Bài 3: Cấu trúc r ẽ nhánh – Vòng l ặp 1. MỤC TIÊU - Hiểu cách so sánh hai s ố trong hợ p ngữ - Hiểu cách thay đổi thứ tự thực hiện các lệnh - Biết cách sử dụng các lệnh so sánh, nhảy và lặ p 2. TÓM T ẮT LÝ THUY Ế ẾT
2.1. Lệnh so sánh Cú pháp: CMP Trái, Ph ải ; Cờ ← ờ ← Trái – Phải
Nếu Trái > Phải ⇒ Trái - Ph ải > 0 : CF = 0 và ZF = 0 Nếu Trái < Phải ⇒ Trái - Ph ải < 0 : CF = 1 và ZF = 0 Nếu Trái = Phải ⇒ Trái - Ph ải = 0 : CF = 0 và ZF = 1
Trái, Phải: Immed, Reg, Mem Bản ch ất c ủa l ệnh CMP là l ệnh SUB Đích, Nguồn (thực hi ện phép tính Đích – Nguồn) nhưng k ết quả của phép tính không đượ c lưu vào Đích như trong lệnh SUB mà tính chất của k ết quả đượ c thể hiện thông qua cờ Ví d ụ: so sánh hai số nguyên dươ ng ng
MOV AH, 1 ; AH ← 1 MOV AL, 2 ; AL ← 2 CMP AH, AL
; CF ← 1, ZF ← 0 vì AH < AL
Sau khi thực hiện các lệnh trên, cờ Carry bật (CF=1), báo hi ệu r ằng AH < AL
2.2. So sánh nhị phân Cú pháp: TEST Trái, Phải ; Cờ ← ờ ← Trái and Phải
Nếu Trái and Ph ải = 0 thì ZF = 1, ng ượ c lại thì ZF = 0 Bản chất của lệnh TEST là lệnh AND Đích, Nguồn nhưng k ết quả của phép tính không đượ c lưu vào Đích như trong lệnh AND mà ảnh hưở ng ng lên cờ . Ví d ụ: kiểm tra hai bit cu ối cùng của AL
TEST AL, 3 ; 3h = 11b Nếu cờ Zero bật (ZF=1), có ngh ĩ a là cả hai bit 0 và 1 c ủa AL đều bằng 0.
2.3. Lệnh nhảy không điều kiện Cú pháp:
JMP ; Nh ảy đến địa chỉ
ườ ng Có các tr ườ ng hợ p sau: • JMP SHORT ; (short jump). Kiểu này chỉ nhảy trong phạm vi từ –128 đến +127 byte so v ớ i vị trí hiện tại. Ví d ụ: JMP SHORT Calculate
Ths. Nguyễn Hứa Duy Khang, Ks. Tr ần Hữu Danh
9
Bài 3 – C ấ ấu trúc r ẽ ẽ nhánh – Vòng l ặ ặ p • JMP ; (near jump). Ki ểu này nhảy tùy ý trong ph ạm vi segment. Ví d ụ: JMP Calculate
• JMP FAR PTR ; (far jump). Ki ểu này nhảy đến bất kì chỗ nào. Ví d ụ: JMP FAR PTR Calculate
• JMP ; (near indirect jump). Khi th ực hiện, thanh ghi PC s ẽ đượ c gán bằng giá tr ị lưu tại địa chỉ này. Có thể k ết hợ p dùng vớ i định vị chỉ số. Ví d ụ:
myPointer DW Prepare, Calculate, Check, Output ... MOV BX, 2 ; chỉ số trong mảng con tr ỏ SHL BX, 1
; nhân đôi
JMP myPointer[BX] ... Prepare:
; công việc 0 ...
Calculate:
; công việc 1 ...
Check:
; công việc 2 – nơ i cần nhảy đến ...
Output:
; công việc 3 ...
• JMP ; (far indirect jump). T ươ ng ng tự tr ườ ng hợ p trên, nhưng ườ ng con tr ỏ gồm c ả segment và offset. Ch ỉ khác ở khai báo con tr ỏ • JMP ; (indirect jump via regs). Nh ảy thanh ghi AX.