Bài giảng Kiến trúc máy tính - Chương 6: Các lệnh hợp ngữ

34 6 0
Bài giảng Kiến trúc máy tính - Chương 6: Các lệnh hợp ngữ

Đ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

Bài giảng Kiến trúc máy tính - Chương 6: Các lệnh hợp ngữ trình bày về phương pháp định địa chỉ, thanh ghi CPU 8086, thanh ghi đa dụng, thanh ghi cờ (Flag), ảnh hưởng các lệnh đến cờ, Program Segment Prefix,... Mời các bạn tham khảo.

CÁC LỆNH HỢP NGỮ Nhắc lại phương pháp định địa  Tức thời (trực hằng)   Thanh ghi   Địa toán hạng tổng nội dung ghi độ dời Tương đối   Địa lệnh địa nhớ tốn hạng Chỉ số (dịch chuyển)   Thanh ghi chứa địa nhớ tốn hạng Gián tiếp nhớ   Địa lệnh địa ô nhớ toán hạng Gián tiếp qua ghi   Toán hạng ghi Trực tiếp   Toán hạng lệnh Tổng nội dung PC độ dời Stack  Thanh ghi SP chứa địa ô nhớ toán hạng Thanh ghi CPU 8086   14 ghi 16 bit nhóm  Thanh ghi đoạn   Thanh ghi trỏ    IP (instruction pointer), SP (stack pointer), BP (base pointer) Thanh ghi số   CS (code segment), DS (data segment), SS (stack segment), ES (extra segment) SI (source index), DI (Destination index) Thanh ghi đa dụng Thanh ghi cờ Thanh ghi đa dụng  AX Accumulator register   BX Base register   Sử dụng cho vòng lặp DX Data register   Thanh ghi sử dụng số CX Counter register   Sử dụng cho tính tốn xuất nhập Sử dụng cho xuất nhập lệnh nhân chia Các ghi đa dụng “chia nhỏ” thành ghi 8-bit (cao thấp)  AH,AL,BH,BL,CH,CL,DH,DL Thanh ghi cờ (Flag) Flags Register Tắt OF DF IF TF SF ZF AF PF CF Tên Overflow Direction Interrupt Trap Sign Zero Auxiliary Carry Parity Carry bit n 11 10 “Mô tả” Tràn số có dấu Hướng xử lý chuỗi Cho phép ngắt CPU thực bước Kiểm tra kết số âm Kiểm tra kết Kiểm tra số bit chẵn Tràn số không dấu Ảnh hưởng lệnh đến cờ   Tại thời điểm CPU thực lệnh, kết cờ phản ánh tình trạng CPU sau thực lệnh INSTRUCTION AFFECTS FLAGS MOV/XCHG Không ảnh hưởng cờ ADD/SUB Tất INC/DEC Tất trừ CF NEG Tất Ví dụ:    ADD AX, BX (trong giả sử AX=BX=0FFFFh) Thay đổi cờ??? SUB AL,BL ( AL=BL=80h) Lệnh nhập xuất chuỗi kí tự  INT 21h  function number 09  routine Xuất chuỗi kí tự Input : AH=09 DX= địa chuỗi ký tự kết thúc $   Output: chuỗi hình Lệnh LEA ( Load Effective Address )   Lấy địa offset biến vào ghi LEA destination, source  LEA DX,MSG ; đưa địa MSG vào DX Program Segment Prefix ( PSP )      Chứa thơng tin chương trình để hệ thống truy xuất 256 byte Làm thay đổi DS, ES MOV AX,@DATA MOV DS,AX   @DATA tên đoạn số liệu DATA Assembler chuyển @DATA thành địa Nhảy có điều kiện  Cú pháp: Jxxx destination_label    Nếu điều kiện thỏa mãn nhảy    Nếu khơng tiếp tục thực lệnh JNZ == jump if not zero Điều kiện   xxx viết tắt điều kiện destination_label nhãn để nhảy đến Thanh ghi cờ Phạm vi nhảy  Không 126 bytes Các lệnh nhảy có dấu SYMBOL DESCRITION JG/JNLE jump if greater than jump if not less than or equal to JGE/JNL jump if greater than or equal to jump if not less or equal to JL/JNGE jump if less than jump if not greater or equal JLE/JNG jump if less than or equal jump if not greater CONDITION ZF=0 and SF=OF SF=OF SFOF ZF=1 or SFOF Các lệnh nhảy không dấu SYMBOL DESCRITION JA/JNBE jump if above CONDITION CF=0 and ZF=0 jump if not below or equal JAE/JNB jump if above or equal CF=0 jump if not below or equal JB/JNAE jump if below CF=1 jump if not above or equal JBE/JNA jump if below or equal jump if not above CF=1 or ZF=1 Các lệnh nhảy cờ SYMBOL DESCRITION CONDITION JE/JZ jump if equal jump if equal to zero ZF=1 JNE/JNZ jump if not equal jump if not zero ZF=0 JC jump if carry CF=1 JNC jump if no carry CF=0 JO jump if overflow OF=1 JNO jump if not overflow OF=0 JS jump if sign negative SF=1 JNS jump if non-negative sign SF=0 JP/JPE jump if parity even PF=1 JNP/JPO jump if parity odd PF=0 Lệnh CMP  Thường dùng so sánh để lấy điều kiện    Cú pháp: CMP destination, source Thực phép trừ destination – source để tính cờ từ xác định điều kiện cho lệnh nhảy Việc sử dụng lệnh nhảy có dấu hay khơng dấu tùy diễn dịch lập trình viên  Ví dụ: AX=7FFFh, BX=8000h CMP AX,BX CMP AX,BX JA lon_hon ;không nhảy JG lon_hon ;nhảy  Viết đoạn chương trình lấy số lớn AX BX vào CX; biết AX, BX chứa số có dấu? Lệnh JMP  Nhảy không điều kiện   Cú pháp: JMP destination Nhảy đoạn CS  Khắc phục phạm vi nhảy có điều kiện TOP: ; thân vòng lặp DEC CX JNZ TOP MOV AX,BX TOP: ; thân vòng lặp dài 126 bytes DEC CX JNZ BOTTOM JMP EXIT BOTTOM: JMP TOP EXIT: MOV AX,BX Biểu diễn ngôn ngữ cấp cao  Cấu trúc IF – THEN – END IF IF (condition is true) THEN execute true branch statements END IF  Ví dụ: ; if AX

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

Tài liệu cùng người dùng

Tài liệu liên quan