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

Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 3

5 20 0

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

THÔNG TIN TÀI LIỆU

3.4. Nhận 1 chuỗi ký tự từ bàn phím Chươ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 trình có tên là BAI_2D.ASM.

Bài – Xuất nhập ký tự DSEG SEGMENT tbao DB ‘Hay go vao phim: $’ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start:mov ax, DSEG mov ds, ax mov ah, 09h ; In câu thông báo hình lea dx, tbao int 21h mov ah, 01h ; Ham 1, nhan ky tu tu ban phim int 21h ; goi ngat thuc hien ham mov ah, 4Ch ; tro ve he dieu hanh int 21h CSEG ENDS END start 3.4 Nhận chuỗi ký tự từ bàn phím - Chương trình sử dụng hàm 0Ah, ngắt 21h để nhập chuỗi ký tự từ bàn phím viết sau Sinh viên soạn thảo thành tập tin chương trình có tên BAI_2D.ASM DSEG SEGMENT max DB 30 len DB chuoi DB 30 dup(?) tbao DB ‘Hay go vao chuoi: $’ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: mov ax, DSEG mov ds, ax mov ah, 09h ; In câu thông báo hình lea dx, tbao int 21h mov ah, 0Ah ; Ham 0Ah, nhap chuoi ky tu tu ban phim lea dx, MAX ; dx chua dia chi vung dem ban phim int 21h ; goi ngat thuc hien ham mov ah, 4Ch ; tro ve he dieu hanh int 21h CSEG ENDS END start Ths Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh Bài – Xuất nhập ký tự - Dịch, sửa lỗi thi hành chương trình trường hợp sau đây: Nhập từ bàn phím chuỗi 30 ký tự Nhập từ bàn phím chuỗi nhiều 30 ký tự - Giá trị biến len trường hợp bao nhiêu? - Tại nhập nhiều 30 ký tự? Chuỗi ký tự nhập vào lưu trữ biến nào? - Sửa chương trình để nhập nhiều 30 ký tự (60 ký tự chẳng hạn) - Tổng quát, khả tối đa hàm 0Ah, ngắt 21h nhận chuỗi ký tự? BÀI TẬP ĐỀ NGHỊ 4.1 Viết chương trình sử dụng hàm 7, ngắt 21h để nhận ký tự từ bàn phím, dùng biến để lưu trữ ký tự nhận (do sinh viên tự đặt tên biến), sau sử dụng hàm 2, ngắt 21h để in hình ký tự nhận lưu biến Chương trình phải có đủ câu thơng báo nhập xuất Ví dụ: Hay go phim: B Ky tu nhan duoc la: B 4.2 Sửa lại chương trình 4.1 cho khơng cần sử dụng biến để lưu trữ ký tự mà kết chạy chương trình khơng thay đổi 4.3 Viết chương trình nhận ký tự từ bàn phím, sau in hình ký tự kế trước kế sau ký tự vừa nhập Ví dụ: Hay go phim: B Ky tu ke truoc : A Ky tu ke sau : C 4.4 Viết chương trình cho phép nhập từ bàn phím tên người, in hình chuỗi có dạng sau: Xin chao Ví dụ: Khi chạy chương trình, nhập vào là: Nguyen Hua Duy Khang Chuỗi in hình là: Xin chao Nguyen Hua Duy Khang Ths Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh Bài – 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 MỤC TIÊU - Hiểu cách so sánh hai số hợp ngữ - Hiểu cách thay đổi thứ tự thực lệnh - Biết cách sử dụng lệnh so sánh, nhảy lặp 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 > : CF = ZF = Nếu Trái < Phải ⇒ Trái - Phải < : CF = ZF = Nếu Trái = Phải ⇒ Trái - Phải = : CF = ZF = Trái, Phải: Immed, Reg, Mem Bản chất lệnh CMP lệnh SUB Đích, Nguồn (thực phép tính Đích – Nguồn) kết phép tính khơng lưu vào Đích lệnh SUB mà tính chất kết thể thơng qua cờ Ví dụ: so sánh hai số nguyên dương MOV AH, ; AH ← MOV AL, ; AL ← CMP AH, AL ; CF ← 1, ZF ← AH < AL Sau thực lệnh trên, cờ Carry bật (CF=1), báo hiệu 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 = ZF = 1, ngược lại ZF = Bản chất lệnh TEST lệnh AND Đích, Nguồn kết phép tính khơng lưu vào Đích lệnh AND mà ảnh hưởng lên cờ Ví dụ: kiểm tra hai bit cuối AL TEST AL, ; 3h = 11b Nếu cờ Zero bật (ZF=1), có nghĩa hai bit AL 2.3 Lệnh nhảy không điều kiện Cú pháp: JMP ; Nhảy đến địa Có trường hợp sau: • JMP SHORT ; (short jump) Kiểu nhảy phạm vi từ –128 đến +127 byte so với vị trí Ví dụ: JMP SHORT Calculate Ths Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh Bài – Cấu trúc rẽ nhánh – Vịng lặp • JMP ; (near jump) Kiểu nhảy tùy ý phạm vi segment Ví dụ: JMP Calculate • JMP FAR PTR ; (far jump) Kiểu nhảy đến chỗ Ví dụ: JMP FAR PTR Calculate • JMP ; (near indirect jump) Khi thực hiện, ghi PC gán giá trị lưu địa Có thể kết hợp dùng với định vị số Ví dụ: myPointer DW Prepare, Calculate, Check, Output MOV BX, ; số mảng trỏ SHL BX, ; nhân đôi JMP myPointer[BX] Prepare: ; công việc Calculate: ; công việc Check: ; công việc – nơi cần nhảy đến Output: ; công việc • JMP ; (far indirect jump) Tương tự trường hợp trên, trỏ gồm segment offset Chỉ khác khai báo trỏ • JMP ; (indirect jump via regs) Nhảy đến địa lưu ghi AX Ví dụ: MOV AX, offset Calculate JMP AX ; PC ← AX 2.4 Lệnh nhảy có điều kiện Cú pháp: J Các lệnh nhảy có điều kiện bắt đầu chữ J sau chữ biểu thị điều kiện (ví dụ JGE: Jump if Greater than or Equal, nhảy lớn hay bằng), tiếp sau tên nhãn Điều kiện để lệnh nhảy xem xét thi hành giá trị cờ tạo từ lệnh CMP hay TEST Khi sử dụng lệnh nhảy có điều kiện sau thực phép so sánh, Ths Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh 10 Bài – Cấu trúc rẽ nhánh – Vòng lặp phải đặc biệt lưu ý tốn hạng phép so sánh số có dấu (signed) hay khơng có dấu (unsigned) để lựa chọn lệnh cho phù hợp Ví dụ: MOV AH,AL ; AL 128 CMP AH,1 JGE Greater ; AH > khơng nhảy ???? Greater: Ví dụ: AL số ngun khơng dấu đoạn chương trình phải sửa lại sau: MOV AH,AL CMP AH,1 JAE Greater Greater: Một số lệnh nhảy có điều kiện thường dùng: Lệnh JB JNAE JAE JNB JBE JNA JA JNBE JE JZ JNE JNZ Ý Nghĩa Nhảy nhỏ (Jump if Below) Nhảy không lớn Nhảy lớn (Jump if Above or Equal) Nhảy không nhỏ Nhảy nhỏ (Jump if Below or Equal) Nhảy không lớn Nhảy lớn (Jump if Above) Nhảy không nhỏ Nhảy (Jump if Equal) Nhảy (Jump if Zero) Nhảy không (Jump if Not Equal) Nhảy không (Jump if Not Zero) Điều Kiện CF = CF = CF = ZF = CF = ZF = ZF = ZF = 2.5 Lệnh lặp Bằng cách dùng lệnh nhảy tạo vịng lặp Tuy nhiên, để viết chương trình tiện lợi ngắn gọn, dùng thêm lệnh lặp LOOP, LOOPZ,… Cú pháp: LOOP tự động giảm CX đơn vị, sau kiểm tra xem CX có 0, khơng nhảy đến nhãn Cú pháp: LOOPZ tự động giảm CX đơn vị, sau kiểm tra xem CX có cờ ZF có bật khơng (ZF=1), hai điều khơng xảy nhảy đến nhãn Ths Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh 11 ... trữ biến nào? - Sửa chương trình để nhập nhiều 30 ký tự (60 ký tự chẳng hạn) - Tổng quát, khả tối đa hàm 0Ah, ngắt 21h nhận chuỗi ký tự? BÀI TẬP ĐỀ NGHỊ 4.1 Viết chương trình sử dụng hàm 7, ngắt... lỗi thi hành chương trình trường hợp sau đây: Nhập từ bàn phím chuỗi 30 ký tự Nhập từ bàn phím chuỗi nhiều 30 ký tự - Giá trị biến len trường hợp bao nhiêu? - Tại nhập nhiều 30 ký tự? Chuỗi ký... Chương trình phải có đủ câu thơng báo nhập xuất Ví dụ: Hay go phim: B Ky tu nhan duoc la: B 4.2 Sửa lại chương trình 4.1 cho không cần sử dụng biến để lưu trữ ký tự mà kết chạy chương trình khơng

Ngày đăng: 11/05/2021, 02:57

Xem thêm:

TỪ KHÓA LIÊN QUAN