Hợp ngữ - Chương 2: Các đại chỉ Logic và điều khiển phần 1
lượt xem 13
download
Phạm vi của lệnh nhảy có điều kiện: cấu trúc mã máy của lệnh nhảy có điều kiện đòi hỏi nhãn đích phải đứng trước lệnh nhảy không quá 126 byte hoặc đứng sau không quá 127 byte...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hợp ngữ - Chương 2: Các đại chỉ Logic và điều khiển phần 1
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: * Phạm vi của lệnh nhảy có điều kiện: cấu trúc mã máy của lệnh nhảy có điều kiện đòi hỏi nhãn đích phải đứng trước lệnh nhảy không quá 126 byte hoặc đứng sau không quá 127 byte * Có 3 loại lệnh nhảy có điều kiện: + Các lệnh nhảy có dấu: được dùng khi kết quả trả về là các số có dấu + Các lệnh nhảy không dấu: được dùng khi kết quả trả về là các số không dấu + Các lệnh nhảy điều kiện đơn: điều kiện phụ thuộc vào 1 cờ riêng biệt
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: * Các lệnh nhảy có dấu: Ký hiệu Chức năng Điều kiện nhảy Nhảy nếu lớn hơn JG/JNLE ZF=0 và SF=0F Nhảy nếu lớn hơn hoặc bằng JGE/JNL SF=0F Nhảy nếu nhỏ hơn JL/JNGE SF0F Nhảy nếu nhỏ hơn hoặc bằng JLE/JNG ZF=1 hay SF=0F
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: * Các lệnh nhảy không dấu: Ký hiệu Chức năng Điều kiện nhảy Nhảy nếu lớn hơn JA/JNBE CF=0 và ZF=0 Nhảy nếu lớn hơn hoặc bằng JAE/JNB CF=0 Nhảy nếu nhỏ hơn JB/JNAE CF=1 Nhảy nếu nhỏ hơn hoặc bằng JBE/JNA CF=1 hay ZF=1
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: * Các lệnh nhảy điều kiện đơn: Ký hiệu Chức năng Điều kiện nhảy Nhảy nếu bằng/Nhảy nếu bằng 0 JE/JZ ZF=1 Nhảy nếu không bằng/Nếu khác 0 JNE/JNZ ZF=0 Nhảy nếu có nhớ JC CF=1 Nhảy nếu không nhớ JNC CF=0 Nhảy nếu tràn số JO OF=1 Nhảy nếu không tràn JNO OF=0 Nhảy nếu dấu âm JS SF=1 Nhảy nếu dấu dương JNS SF=0 Nhảy nếu cờ chẵn JP/JPE PF=1 Nhảy nếu cờ lẻ JNP/JPO PF=0
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: Ví dụ: Viết chương trình hiển thị toàn bộ tập hợp các ký tự của hệ IBM ;trả quyền điều khiển TITLE BAITAP4:IBM .MODEL SMALL MOV AH,4Ch .STACK 100h INT 21h .CODE MAIN ENDP MAIN PROC END MAIN MOV AH,2 ; số ký tự MOV CX,256 MOV DL,0 ; NULL PRINT_LOOP INT 21h INC DL DEC CX JNZ PRINT_LOOP
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Các lệnh nhảy có điều kiện: Lệnh CMP Lệnh CMP dùng để so sánh giữa 2 toán tử bằng cách lấy toán tử đích trừ đi toán tử nguồn , Cú pháp: CMP Chú ý: + Thường được sử dụng chung với lệnh nhảy có điều kiện + CMP giống lệnh SUB nhưng toán hạng đích không bị thay đổi giá trị. Ví dụ: Với AX=7FFFh, BX=0001h ;điều kiện nhảy AX>BX CMP AX,BX ;nếu lớn hơn thì nhả đến nhãn NHAN JG NHAN NHAN:
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Các lệnh điều khiển rẻ nhánh Lệnh nhảy không điều kiện: Lệnh JMP Lệnh JMP dùng để nhảy không điều kiện, dùng để khắc phục giới hạn của lệnh nhảy có điều kiện: Cú pháp: JMP Ví dụ: MOV CX,10 TOP: ;giảm bộ đếm DEC CX ;đúng lặp lại nếu CX> JNZ BOTTOM ;sai nhảy đến nhãn EXIT JMP EXIT BOTTOM: JMP TOP EXIT: MOV AX,BX
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc rẻ nhánh IF…THEN….ELSE Cấu trúc rẻ nhánh IF…THEN…..ELSE biểu diễn như sau: Ví dụ: Nếu AX>0 thì AX = AX-1, ngược lại (AX0 THEN AX = AX - 1 Đúng ELSE AX = AX + 1 Lệnh 1 Lệnh 2 END IF CMP AX,0 ;AX>0? ;AX
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc CASE Cấu trúc rẻ nhánh CASE biểu diễn như sau: Phát biểu Kiểm tra giá trị Không có giá trị nào Giá trị k Giá trị 1 Giá trị 2 Tập lệnh 1 Tập lệnh 2 Tập lệnh k Tập lệnh
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc CASE Ví dụ: Nếu AX>0 thì BX = 1, nếu AX
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc lặp FOR Vòng lặp FOR là cấu trúc lặp lại các dòng lệnh với số lần xác định trước, thường dùng biến đếm để điều khiển) Ví dụ: Hiển thị lên màn hình 80 dấu * Khởi tạo đếm Mô tả : FOR 80 lần DO Hiển thị dấu * Lệnh END_FOR ;Khởi tạo đếm MOV CX,80 ;In dấu * Đếm=đếm-1 MOV AH,2 DL,’*’ MOV FOR_: Sai JCXZ SKIP Đếm=0? INT 21h ;lặp lại LOOP FOR_ Đúng SKIP:
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc lặp WHILE Vòng lặp WHILE phụ thuộc vào điều kiện kiểm tra ngay từ đầu. Khi điều kiện còn thỏa mãn còn lặp. Ví dụ: Đếm số ký tự trong một dòng M ô tả: Sai Điều kiện Khởi tạo bộ đếm =0 Đọc một ký tự Đúng WHILE ký tự ký tự đầu dòng DO Lệnh đếm=đếm+1 đọc một ký tự END_WHILE
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc lặp WHILE Ví dụ: Đếm số ký tự trong một dòng ;DX đếm số ký tự MOV DX,0 ;Đọc 1 ký tự MOV AH,1 INT 21h WHILE_: ;có phải ký tự đầu dòng không? CMP AL,0Dh ;Đúng Thoát vòng lặp JE END_WHILE ;Không đúng Tăng đếm lên 1 INC DX ;Đọc lại 1 ký tự INT 21h ;lặp lại JMP WHILE_ END_WHILE:
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Cấu trúc lặp REPEAT Vòng lặp REPEAT thi hành ít nhất 1 lần rồi mới kiểm tra điều kiện, nếu thỏa mãn thì tiếp tục lặp Ví dụ: Đọc vào các ký tự, chỉ dừng lại khi gặp ký tự trắng Mô tả : Lệnh REPEAT Đọc một ký tự UNTIL ký tự trắng Sai Điều kiện ;Đọc ký tự MOV AH,1 Đúng REPEAT_: INT 21h AL,’ ’ CMP ; Không đúng JNE REPEAT_
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Ví dụ: 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 chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký tự nhậpvào là 'S', 's', 'T', 't', 'C', 'c'. AL,’S’ BUOI_SANG: CMP .MODEL SMALL LEA DX,CBS JE BUOI_SANG .STACK 100h AL,’s’ MOV AH,9 CMP INT 21h JE BUOI_SANG .DATA JMP THOAT CBS DB "CHAO BUOI SANG$" AL,’T’ CMP CBT DB "CHAO BUOI TRUA$" BUOI_TRUA: JE BUOI_TRUA CBC DB "CHAO BUOI CHIEU$" LEA DX,CBT AL,’t’ CMP .CODE MOV AH,9 JE BUOI_TRUA INT 21h MOV AX, @DATA JMP THOAT MOV DS, AX AL,’C’ CMP JE BUOI_CHIEU ;nhập một ký tự BUOI_CHIEU: AL,’c’ CMP LEA DX,CBC JE BUOI_CHIEU MOV AH,9 MOV AH,1 INT 21h INT 21h JMP THOAT END
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN Ví dụ: Viết chương trình hiển thị lên màn hình hình chữ nhật tô kín dấu * với 10 cột và 5 hàng: ********** ********** ********** ********** ********** Mô tả : for_j: .stack 100h for_i: For I=1 to 5 mov dl,'*' .data mov dl,0ah For J=1 to 10 int 21h i db - 1 int 21h In(‘*’) inc j j db - 1 mov dl,0Dh End_For_J cmp j,20 int 21h End_For_I jl for_j .code jge for_i mov j ,0 mov ax,@data inc i exit: mov ds,ax cmp i,5 mov ah,4ch jl for_j int 21h mov ah,2 jge exit end
- Chöông 2: CAÙC CHÆ THÒ LOGIC VAØ ÑIEÀU KHIEÅN BÀI TẬP Viết chương trình: 1. Nhập vào 1 ký tự, nếu không phải là một số thì nhập lại, nếu là số thì in số đó ra màn hình 2. Nhập vào 2 ký tự số (19), Tìm số lớn nhất và số nhỏ nhất và in kết quả ra màn hình 3. Nhập vào 1 ký tự chữ thường. Xuống dòng và in ra các ký tự từ a đến ký tự đó . 4. Nhập vào 1 ký tự số (19). Tính tổng tất cả các số từ số đó đến 9
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài thực hành số 2: Lệnh so sánh – Lệnh nhảy – Lệnh lặp
7 p | 438 | 98
-
KIẾN TRÚC MÁY TÍNH -NGÔN NGỮ CỦA MÁY TÍNH
61 p | 375 | 85
-
Bài tập Lập trình hợp ngữ - Số 2
10 p | 554 | 75
-
Giáo trình Lập trình iSO (Module 2) - Trung tâm tin học ĐH KHTN
143 p | 159 | 52
-
Tài Liệu Lập Trình Hợp Ngữ ĐHQG Hà Nội
13 p | 179 | 51
-
Kiến trúc máy tính-Ngôn ngữ máy
65 p | 206 | 48
-
Giáo trình Lập trình hợp ngữ: Phần 2 - Đỗ Văn Toàn, Dương Chính Cương
47 p | 126 | 32
-
Bài giảng Phát triển ứng dụng Web bằng PHP: Phần 2(3) - Dương Khai Phong
64 p | 94 | 14
-
Các giao diện và mẫu phần 2
8 p | 102 | 13
-
Hợp ngữ - Trương Văn Thắng
45 p | 116 | 12
-
Lập trình iSO (Module 2) - TTTH ĐH KHTN
143 p | 87 | 11
-
Đề thi kết thúc học phần học kì 2 môn Kiến trúc máy tính và hợp ngữ năm 2020-2021 có đáp án - Trường ĐH Đồng Tháp
3 p | 50 | 10
-
Đề thi kết thúc học phần học kì 2 môn Kiến trúc máy tính và Hợp ngữ năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
3 p | 33 | 10
-
Bài giảng Thiết kế và lập trình web bằng ngôn ngữ ASP - Phần 2: HTML và JavaScript (Tiếp theo)
42 p | 33 | 10
-
Đề thi kết thúc học phần học kì 2 môn Kiến trúc máy tính và hợp ngữ năm 2021-2022 có đáp án - Trường ĐH Đồng Tháp
4 p | 105 | 8
-
Quá trình hình thành giáo trình hướng dẫn sử dụng các hàm có sẵn trong win p5
5 p | 52 | 5
-
Bài giảng Kiến trúc máy tính và hợp ngữ: Giao diện bộ xử lý với I/O - Huỳnh Tổ Hạp
9 p | 50 | 5
-
Áp dụng học máy dựa trên lập trình di truyền trong tìm kiếm web xuyên ngữ
5 p | 55 | 5
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