Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 4
lượt xem 8
download
Bài 3 – Cấu trúc rẽ nhánh – Vòng lặp Ví dụ: Nhập mảng A gồm 10 ký tự MOV SI, 0 ; chỉ số mảng MOV CX, 10 ; số lần lặp LAP: MOV AH, 1 ; nhập ký tự INT 21H MOV A[SI], AL INC SI
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 4
- Bài 3 – Cấu trúc rẽ nhánh – Vòng lặp Ví dụ: Nhập mảng A gồm 10 ký tự MOV SI, 0 ; chỉ số mảng MOV CX, 10 ; số lần lặp LAP: MOV AH, 1 ; nhập ký tự INT 21H MOV A[SI], AL INC SI 3. NỘI DUNG THỰC HÀNH 3.1. Cấu trúc Rẽ nhánh - Chương trình sau đây nhận 1 ký tự. Nếu là ký tự HOA thì in ra màn hình "Ky tu HOA". Ngược lại in ra câu "Ky tu thuong". (Mã ASCII của ký tự HOA ký tự thường mov ah, 09 ; Nếu không lớn hơn => ký tự HOA lea dx, tbao1 ; in "Ky tu HOA" int 21h jmp exit nhan: mov ah, 09 ; in "Ky tu thuong" lea dx, tbao2 int 21h exit:mov ah, 7 int 21h mov ah, 4Ch ; trở về hệ điều hành int 21h CSEG ENDS END start - Dịch và chạy CT ở những trường hợp khác nhau để xem kết quả trên màn hình. - Vẽ lưu đồ điều khiển của chương trình. Ths. Nguyễn Hứa Duy Khang, Ks. Trần Hữu Danh 12
- Bài 3 – Cấu trúc rẽ nhánh – Vòng lặp - Tại sao cần phải có lệnh JMP EXIT? Nếu không có lệnh ấy thì chương trình thực hiện như thế nào? Chạy chương trình để kiểm chứng. - Thay lệnh JA NHAN bằng lệnh JNA NHAN. Sửa chương trình sao cho kết quả không thay đổi. - Khi ký tự nhập vào không phải là chữ cái thì kết quả in ra màn hình là gì? Tại sao? 3.2 Cấu trúc vòng lặp - Xem chương trình in ra màn hình lần lượt các ký tự từ A đến Z được viết như sau. Hãy soạn thảo và đặt tên tập tin là BAI_3B.ASM. - Dịch và chạy chương trình để xem kết quả trên màn hình. - Vòng lặp trong chương trình bao gồm đoạn lệnh nào? Viết theo kiểu while do hay repeat ... until hay for? Vẽ lưu đồ chương trình. - Sửa chương trình để in ra màn hình lần lượt các ký tự từ 'Z' đến 'A'. - Tiếp tục sửa chương trình sao cho giữa các ký tự có 1 khoảng trống (Z Y ....B A) - Dùng lệnh LOOP để viết lại chương trình BAI_3B.ASM theo cấu trúc vòng lặp for. CSEG SEGMENT ASSUME CS: CSEG start:mov dl, 'A' ; DL chứa ký tự đầu tiên 'A' nhan:mov ah, 02h ; in ký tự trong DL ra màn hình int 21h inc dl ; DL chứa ký tự kế cần in cmp dl, 'Z' ; So sánh DL với 'Z' jna nhan ; Nếu 'Z' thì thoát (không in tiếp) int 21h mov ah, 4Ch int 21h CSEG ENDS END start 4. BÀI TẬP KIỂM TRA: 4.1 Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo tương ứng sau: - Nếu ký tự nhập là ‘S’ hay ‘s’ thì in ra “Good morning!” - Nếu ký tự nhập là ‘T’ hay ‘t’ thì in ra “Good Afternoon!” - Nếu ký tự nhập là ‘C’ hay ‘c’ thì in ra “Good everning!” 4.2 Viết lại chương trình BAI_3A.ASM sao cho chương trình có thể phân biệt được 3 loại ký tự nhập từ bàn phím: "Ký tự HOA", "ký tự thường" và "ký tự khác". Ths. Nguyễn Hứa Duy Khang, Ks. Trần Hữu Danh 13
- Bài 3 – Cấu trúc rẽ nhánh – Vòng lặp 4.3 Viết chương trình nhập từ bàn phím 1 ký tự thường. Sau đó in ra màn hình lần lượt các ký tự từ ký tự nhận được đến 'z' sao cho giữa các ký tự có 1 khoảng trống. 4.4 Không dùng hàm 0Ah/21h, hãy dùng lệnh lặp để viết chương trình nhập vào 1 chuỗi ký tự. Sau khi nhập xong đếm xem chuỗi có bao nhiêu ký tự. In ra màn hình chuỗi nhận được và số ký tự có trong chuỗi. Ví dụ: S = "Hello world !" ==> Số kí tự trong chuỗi là 13. 4.5 Viết chương trình cho phép nhập vào một chuỗi bất kỳ. Sau đó: - Đổi tất cả ký tự thường thành ký tự hoa và in ra màn hình. - Đổi tất cả ký tự hoa thành ký tự thường và in ra màn hình. Ví dụ: S = ‘weLcOme To AssEmblY’ In ra: welcome to assembly - WELCOME TO ASSEMBLY 4.6 Nhập vào 2 chuỗi số, đổi 2 chuỗi thành số, sau đó cộng hai số, đổi ra chuỗi và xuất chuỗi tổng. Ví dụ: S1 = "123" => N1 = 123 S2 = "456" => N2 = 456 N = N1 + N2 = 123 + 456 = 579 => S = "579" (xuất S ra màn hình) 4.7 Nhập 2 số nguyên dương A, B. Tính A/B, A*B (không dùng lệnh DIV, MUL) và in ra màn hình kết quả. Ví dụ: A=18, B=3 Tính A/B: 18 - 3 - 3 - 3 - 3 - 3 - 3 = 0, vậy A/B = 6 (tổng trừ B cho đến khi A = 0). Tính A*B = 18 + 18 + 18 = 54 Ths. Nguyễn Hứa Duy Khang, Ks. Trần Hữu Danh 14
- Bài 4 – Nhập xuất số dạng BIN-HEX-DEC Bài 4: Nhập xuất số dạng BIN – HEX - DEC 1. Mục Tiêu: - Nhập từ bàn phím số ở dạng nhị phân, thập lục phân và thập phân - In lên màn hình các số ở dạng nhị phân, thập lục phân và thập phân 2. Kiến thức cần chuẩn bị: - Kết quả của các bài thực hành trước - Các lệnh xử lý chuỗi. 3. Nội dung thực hành: 3.1. Nhập xuất nhị phận: Chương trình mẫu sau đây cho phép nhập số nhị phân 8 bit, sau đó in ra màn hình số nhị phân nhận được (BAI_6A.ASM): inchuoi MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap so nhi phan 8 bit: $" msg2 DB "So nhi phan da nhap la: $" xdong DB 10, 13, ‘$’ sobin DB ? ; lưu trữ số nhị phân nhận được DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 CALL bin_in MOV sobin, BL inchuoi xdong inchuoi msg2 MOV BL, sobin CALL bin_out MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khỏi chương trình INT 21h bin_in PROC MOV BL, 0 ; Xóa BL MOV CX, 8 ; nhập đủ 8 bit thì dừng ThS. Nguyễn Hứa Duy Khang, Ks. Trần Hữu Danh 28
- Bài 4 – Nhập xuất số dạng BIN-HEX-DEC nhap:MOV AH, 01h ; Hàm nhập ký tự INT 21h CMP AL, 0Dh ; nếu là phím Enter thì thôi nhập JZ exit ; không phải Enter thì đổi sang bit SHL BL, 1 ; Dịch trái BL 1 bit SUB AL, 30h ; Ký số - 30h = số ADD BL, AL ; Chuyển bit từ AL sang BL lưu trữ LOOP nhap exit:RET bin_in ENDP bin_out PROC MOV CX, 8 ; Xuất 8 bit trong BL ra M.Hình xuat:MOV DL, 0 SHL BL, 1 ; CF chứa MSB, xuất ra màn hình RCL DL, 1 ; đưa CF vào LSB của DL ADD DL, 30h ; Số + 30h = Ký số MOV AH, 02h ; In ra màn hình INT 21h LOOP xuat RET bin_out ENDP CSEG ENDS END begin - Soạn thảo, Biên dịch và cho chạy file BAI_6A.ASM để kiểm tra kết quả. - Sửa chương trình trên thành BAI_6A1.ASM sao cho có thể nhập và xuất số nhị phân 16 bit. - Viết lại chương trình trên để nhập 1 ký tự từ bàn phím, sau đó in ra màn hình mã ASCII của ký tự nhận được ở dạng nhị phân. 3.2. Nhập xuất thập lục phân: Chương trình sau đây cho phép nhập 1 ký tự từ bàn phím, sau đó in ra màn hình mã ASCII của ký tự nhận được ở dạng thập lục phân - Soạn thảo, Biên dịch và cho chạy file BAI_6B.ASM để kiểm tra kết quả. - Viết lại chương trình trên để nhập 2 số thập lục phân 8 bit A và B, sau đó in ra màn hình kết A + B ở dạng thập lục phân. inchuoi MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap 1 ky tu: $" msg2 DB "Ma ASCII o dang Hex: $" ThS. Nguyễn Hứa Duy Khang, Ks. Trần Hữu Danh 29
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Autocad3D - Các lệnh cơ bản
54 p | 918 | 301
-
Thiết kế Web động và sử dụng PHP & MySQL
632 p | 395 | 158
-
Cấu trúc máy tính và lập trình Assembly : CẤU TRÚC TỔNG QUÁT CỦA HTMT part 1
7 p | 467 | 119
-
Tìm hiểu Cấu hình ISA Server 2006 HTTP Filter
11 p | 310 | 114
-
Kỹ năng lập trình đơn giản, trong sáng, tổng quát
388 p | 224 | 82
-
Giáo trình Phân tích thiết kế hệ thống thông tin quản lý
123 p | 272 | 77
-
Cấu trúc máy tính và lập trình Assembly : CẤU TRÚC TỔNG QUÁT CỦA HTMT part 2
7 p | 257 | 75
-
Tài liệu Lập trình C# tiếng Việt
212 p | 341 | 74
-
PHP cơ bản - Bài 10: Tạo trang login bằng PHP và MYSQL
5 p | 158 | 17
-
Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 3: Truy cập cơ sở dữ liệu
66 p | 87 | 9
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 3
5 p | 89 | 8
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 6
5 p | 102 | 6
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 7
5 p | 93 | 5
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 5
5 p | 77 | 5
-
BatteryX Technologi - Medical File part 4
6 p | 81 | 5
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 2
5 p | 56 | 5
-
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 1
4 p | 60 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn