Bài giảng Kỹ thuật vi xử lý: Chương 3 - Nguyễn Văn Thọ

25 14 0
Bài giảng Kỹ thuật vi xử lý: Chương 3 - Nguyễn Văn Thọ

Đ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

Nội dung chương 3 Vi xử lý Intel 8086/8088 nằm trong bài giảng Kỹ thuật vi xử lý nhằm trình bày về Intel 8086, các chân tin hiệu 8086, phân kênh và đệm cho các bus, các thanh ghi, các thanh ghi đoạn.

DuyTan University Kỹ thuật Vi xử lý ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN CHƯƠNG VI XỬ LÝ INTEL 8086/8088 Nguyễn Văn Thọ Kha Điện tử viễn thông Đại học Duy Tân – 2010 Nguyen Van Tho – Duy Tan University INTEL 8086 2-2 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University CÁC CHÂN TÍN HIỆU 8086 M/IO (S2) AD0-AD15 DT/R(S1) Tín hiệu điều khiển hệ thống RD WR (LOCK) DEN (S0) SS0 READY BHE/S7 Tín hiệu điều khiển CPU đồng hồ nguồn NMI INTR RESET MN/MX TEST CLK Vcc GND GND 16 đường địa thấp/dữ liệu A16/S3 A17/S4 A18/S5 A19/S6 đường bus C/ địa cao 8086 HOLD(RQ/GT0) HLDA(RQ/GT1) INTA(QS1) Tín hiệu điều khiển bus ALE(QS0) 2-3 Nguyen Van Tho – Duy Tan University Phân kênh đệm cho bus Vì phải phân kênh khuyếch đại đệm: • Các bus địa liệu dùng chung chân • Nâng cao khả tải bus Các vi mạch phân kênh đệm: • 74LS373: phân kênh • 74LS245: đệm liệu chiều • 74LS244: đệm trạng thái theo chiều 2-4 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University Phân kênh đệm cho bus M/IO RD WR BHE/S7 A19/S6 M/IO RD WR BHE A19 ‘244 74LS373 A16 A15 G A16/S3 A8 A7 8086 A0 G ALE G 74LS373 74LS373 D15 AD15 ‘245 G DIR AD8 AD7 D8 D7 ‘245 G DIR AD0 DEN DT/R D0 2-5 Nguyen Van Tho – Duy Tan University SƠ ĐỒ KHỐI Các ghi đa Các ghi trỏ số AX BX CX DX SP BP SI DI EU bus địa 20 bit Các ghi đoạn trỏ lệnh ∑ CS DS SS ES IP Bus liệu ALU 16 bit Bus CPU 16 bit liệu 20 bit địa Logic điều khiển bus Các ghi tạm thời ALU BIU Bus Khối điều khiển EU Hàng đợi lệnh Thanh ghi cờ 2-6 DuyTan University Kỹ thuật Vi xử lý CÁC THANH GHI bit cao Nguyen Van Tho – Duy Tan University bit thấp AX AH AL BX BH BL CX CH CL DX DH DL ƒ Thanh ghi chứa AX (accumulator): chứa kết phép tính Kết bit chứa AL ƒThanh ghi sở BX (base): chứa địa sở ƒThanh ghi đếm CX (count): dùng để chứa số lần lặp lệnh lặp (Loop) CL dùng để chứa số lần dịch quay lệnh dịch quay ghi ƒThanh ghi liệu DX (data): AX chứa liệu phép tính nhân chia số 16 bit DX dùng để chứa địa 2-7 cổng lệnh vào liệu trực tiếp (IN/OUT) CÁC THANH GHI Nguyen Van Tho – Duy Tan University •8088/8086 đến 80286 : 16 bits •80386 trở lên: 32 bits EAX, EBX, ECX, EDX 16 bit cao 16 bit thấp EAX AH AL EBX BH BL ECX CH CL EDX DH DL ƒ Đảm bảo tính tương thích ngược : chương trình viết cho 8088/8086 chạy xử lý 80386 cao ƒ Các chương trình viết cho 80386 khơng chạy máy tính có xử lý thấp 2-8 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University CÁC THANH GHI ĐOẠN Tổ chức nhớ Mbytes • Đoạn nhớ (segment) FFFFFH ¾ 216 bytes =64 KB ¾ Đoạn 1: địa đầu 00000 H ¾ Đoạn 2: địa đầu 00010 H ¾ Đoạn cuối cùng: FFFF0 H ã ễ nh on: ắ a ch lch: offset ¾ Ơ 1: offset: 0000 ¾ Ơ cuối cùng: offset: FFFF 1FFFFH ã a ch vt lý: ắ Segment : offset Offset=F000 1000 10000H Thanh ghi đoạn 00000H 2-9 Nguyen Van Tho – Duy Tan University CÁC THANH GHI ĐOẠN Các ghi đoạn: chứa địa đoạn FFFFF 58FFF 49000 43FFF 34000 30000 2FFFF 20000 1FFFF 10000 00000 Đoạn liệu phụ extra segment Đoạn ngăn xếp Stack segment 4900 3400 ES SS Đoạn mã Code segment Đoạn liệu Data segment 2000 CS 1000 DS 2-10 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University CÁC THANH GHI ĐOẠN Các đoạn chồng lên FFFFF s t a c k d a t a c o d e 0A480 0A47F 0A280 0A27F 0A0F0 0A0EF Stack 0A28 SS Data 0A0F DS 090F CS Code 090F0 00000 2-11 Nguyen Van Tho – Duy Tan University THANH GHI CON TRỎ & CHỈ SỐ Chứa địa lệch (offset) • Con trỏ lệnh IP (instruction pointer): chứa địa lệnh on mó lnh CS ắ CS:IP ã Con trỏ sở BP (Base Pointer): chứa địa liệu đoạn ngăn xếp SS đoạn khỏc ắ SS:BP ã Con tr ngn xp SP (Stack Pointer): chứa địa thời đỉnh ngăn xếp ¾ SS:SP • Chỉ số nguồn SI (Source Index): chứa địa liệu nguồn đoạn liệu DS cỏc lnh chui ắ DS:SI ã Ch s ớch (Destination Index): chứa địa liệu đích đoạn d liu DS cỏc lnh chui ắ DS:DI ã SI DI sử dụng ghi đa • 80386 trở lên 32 bit: EIP, EBP, ESP, EDI, ESI 2-12 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University THANH GHI CỜ 15 14 O D I T S Z A P C bit sử dụng, cờ trạng thái: • C hoăc CF (carry flag)): CF=1 có nhớ mượn từ MSB • P PF (parity flag): PF=1 (0) tổng số bít kết chẵn (lẻ) • A AF (auxilary carry flag): cờ nhớ phụ, AF=1 có nhớ mượn từ số BCD thấp sang BCD cao • Z ZF (zero flag): ZF=1 kết • S SF (Sign flag): SF=1 kết âm • O OF (Overflow flag): cờ tràn OF=1 kết số vượt ngồi giới hạn biểu diễn thực phép tốn cộng trừ số có dấu 2-13 Nguyen Van Tho – Duy Tan University THANH GHI CỜ 15 14 O D I T S Z A P C cờ điều khiển • T hoăc TF (trap flag)): cờ bẫy, TF=1 CPU làm việc chế độ chạy lệnh • I IF (Interrupt enable flag): cờ cho phép ngắt, IF=1 CPU cho phép yêu cầu ngắt (ngắt che được) tác động (Các lệnh: STI, CLI) • D DF (direction flag): cờ hướng, DF=1 CPU làm việc với chuỗi ký tự theo thứ tự từ phải sang trái (lệnh STD, CLD) 2-14 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University BẢN ĐỒ BỘ NHỚ CỦA MÁY TÍNH PC-IBM Vùng nhớ mở rộng FFFFF Vùng nhớ hệ thống 384 Kbytes A0000 9FFFF 00000 Vùng nhớ chương trình 640 Kbytes Mbytes nhớ thực 2-15 Nguyen Van Tho – Duy Tan University BẢN ĐỒ BỘ NHỚ CỦA MÁY TÍNH PC-IBM 9FFFF 9FFF0 Vùng nhớ chương trình MSDOS Vùng dành cho chương trình ứng dụng Vùng nhớ hệ thống FFFFF F0000 E0000 ROM BIOS ROM BASIC Vùng để dành 08E30 08490 02530 01160 00700 00500 00400 00000 COMMAND.COM Device drivers MSDOS IO.SYS Vùng DOS Vùng BIOS Các vector ngắt C8000 C0000 B0000 A0000 Video BIOS ROM Video RAM (text) Video RAM (đồ hoạ) 2-16 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University CÁC CỔNG XUẤT NHẬP Địa chỉ: 0000H –FFFFH, M/IO = FFFF Vùng mở rộng 03F8 COM1 03F0 Điều khiển đĩa mềm 03D0 CGA adapter 0378 0320 LPT1 02F8 COM2 0060 8255 0040 Định thời (8253) Điều khiển ổ cứng 0020 Điều khiển ngắt 0000 Điều khiển DMA 2-17 Nguyen Van Tho – Duy Tan University TẬP LỆNH CỦA 8086 ¾ Nhóm lệnh di chuyển liệu MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT ¾Các lệnh số học : ADD, ADC, SUB, MUL, IMUL, DIV, IDIV, INC, DEC ¾Các lệnh logic : AND, OR, NOT, NEG, XOR ¾ Lệnh quay dịch: RCL, RCR, ROL, ROR, SAL, SAR, SHL, SHR ¾ Các lệnh thao tác chuỗi MOVS, MOVSB, MOVSW, CMPS ¾ Các lệnh điều khiển chương trình : JMP, JE, JZ, JNE or JNZ, JG, JGE, JL, JLE, JA, JB, JAE, JBE, JC, JNC, CALL, INT, IRET 2-18 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH DI CHUYỂN DỮ LIỆU MOV • Dùng để chuyển ghi, ghi ô nhớ chuyển số vào ghi nhớ • Cú pháp: MOV Đích, nguồn • Lệnh khơng tác động n c ã Vớ d: ắMOV AX, BX ắMOV AH, ‘A’ ¾MOV AL, [1234H] 2-19 Nguyen Van Tho – Duy Tan University NHÓM LỆNH DI CHUYỂN DỮ LIỆU Lệnh XCHG • Dùng để hoán chuyển nội dung hai ghi, ghi nhớ • Cú pháp: XCHG Đích, nguồn • Giới hạn: tốn hạng khơng ghi đoạn • Lệnh khơng tỏc ng n c ã Vớ d: ắXCHG AX, BX ¾XCHG AX, [BX] 2-20 10 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH DI CHUYỂN DỮ LIỆU Lệnh PUSH • • • • • • Dùng để cất từ từ ghi ô nhớ vào đỉnh ngăn xếp Cú pháp: PUSH Nguồn Mô tả: SP=SP-2, Nguồn => {SP} Giới hạn: ghi 16 bit từ nhớ Lệnh khơng tác động đến cờ Ví dụ: ¾PUSH BX ¾PUSH PTR[BX] Lệnh PUSHF • Cất nội dung ghi cờ vào ngăn xếp 2-21 Nguyen Van Tho – Duy Tan University NHÓM LỆNH THAO TÁC CHUỖI Lệnh CMPS • Dùng để so sánh phần tử chuỗi có phần tử loại • Cú pháp: CMPS chuỗi đích, chuỗi nguồn CMPSB CMPSW • Thực hiện: ¾DS:SI địa phần tử chuỗi nguồn ¾ES:DI địa phần tử chuỗi đích ¾Sau lần so sánh SI=SI +/- 1, DI=DI +/- SI=SI +/- 2, DI=DI +/- tuỳ thuộc vào cờ hướng DF 0/1 • Cập nhật cờ AF, CF, OF, PF, SF, ZF 2-22 11 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHĨM LỆNH SỐ HỌC Lệnh ADD • • • • • • Lệnh cộng hai toán hạng Cú pháp: ADD Đích, nguồn Thực hiện: Đích=Đích + nguồn Giới hạn: tốn hạng khơng nhớ ghi đoạn Lệnh thay đổi cờ: AF, CF, OF, PF, SF, ZF Ví dụ: ¾ADD AX, BX ¾ADD AX, 40H Lệnh SUB • • • • • Lệnh trừ Cú pháp: SUB Đích, nguồn Thực hiện: Đích=Đích - nguồn Giới hạn: tốn hạng khơng nhớ ghi đoạn Lệnh thay đổi cờ: AF, CF, OF, PF, SF, ZF • Ví dụ: SUB AL, 30H 2-23 Nguyen Van Tho – Duy Tan University NHĨM LỆNH SỐ HỌC Lệnh INC • • • • • Lệnh cộng vào toán hạng ghi nhớ Cú pháp: INC Đích Thực hiện: Đích=Đích + Lệnh thay đổi cờ: AF, OF, PF, SF, ZF Vớ d: ắINC AX Lnh DEC ã ã • • • Lệnh trừ từ nội dung ghi nhớ Cú pháp: DEC Đích Thực hiện: Đích=Đích - Lệnh thay đổi cờ: AF, OF, PF, SF, ZF Ví dụ: ¾DEC [BX] 2-24 12 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH SỐ HỌC Lệnh MUL • Lệnh nhân số không dấu • Cú pháp: MUL ngun ã Thc hin: ắ AX=AL* ngun8bit ắDXAX=AX*ngun16bit ã Lnh ny thay i c: CF, OF ã Vớ d: ắMUL BL Lệnh IMUL • nhân số có dấu 2-25 Nguyen Van Tho – Duy Tan University NHÓM LỆNH SỐ HỌC Lệnh DIV • Lệnh chia số khơng dấu • Cỳ phỏp: DIV ngun ã Thc hin: ắAL = thng (AX / nguồn8bit) ; AH=dư (AX / nguồn8bit) ¾AX = thương (DXAX / nguồn16bit) ; DX=dư (DXAX / nguồn16bit) • Lnh ny khụng thay i c ã Vớ d: ắDIV BL Lệnh IDIV • chia số có dấu 2-26 13 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH SỐ HỌC Lệnh CMP • Lệnh so sánh byte từ • Cú pháp: CMP Đích, nguồn • Thực hiện: ¾Đích = nguồn : CF=0 ZF=1 ¾Đích> nguồn : CF=0 ZF=0 ¾Đích < nguồn : CF=1 ZF=0 • Giới hạn: tốn hạng phải độ dài không ô nhớ • Chú ý : Lệnh CMP thường đứng trước lệnh nhảy có điều kiện 2-27 Nguyen Van Tho – Duy Tan University NHÓM LỆNH LOGIC, DỊCH & QUAY Lệnh AND • • • • • • Lệnh AND logic tốn hạng Cú pháp: AND Đích, nguồn Thực hiện: Đích=Đích And nguồn Giới hạn: tốn hạng khơng ô nhớ ghi đoạn Lệnh thay đổi cờ: PF, SF, ZF xoá cờ CF, OF Ví dụ: ¾AND BL, 0FH Lệnh XOR, OR: tương tự lệnh AND Lệnh NOT: đảo bit toán hạng Lệnh NEG: xác định số bù toán hạng 2-28 14 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH LOGIC, DỊCH & QUAY Lệnh RCL • Lệnh quay trái thơng qua cờ nhớ • Cú pháp: RCL Đích, CL (với số lần quay lớn 1) RCLĐích, RCL Đích, Số lần quay (80286 trở lên) • Thực hiện: quay trái đích CL lần • Đích ghi (trừ ghi đoạn) nhớ • Lệnh thay đổi cờ: CF, OF CF MSB LSB 2-29 Nguyen Van Tho – Duy Tan University NHÓM LỆNH LOGIC, DỊCH & QUAY Lệnh ROL • Lệnh quay trái • Cú pháp: ROL Đích, CL (với số lần quay lớn 1) ROL Đích, ROL Đích, Số lần quay (80286 trở lên) • Thực hiện: quay trái đích CL lần • Đích ghi (trừ ghi đoạn) nhớ • Lệnh thay đổi cờ: CF, OF CF MSB LSB 2-30 15 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHĨM LỆNH LOGIC, DỊCH & QUAY Lệnh SHL • Lệnh dịch trái số học • Cú pháp: SHL Đích, CL (với số lần dịch lớn 1) SHL Đích, SHL Đích, số lần dịch (80286 trở lên) • Thực hiện: dịch trái đích CL bit tương đương với Đích=Đích*2CL • Lệnh thay đổi cờ SF, ZF, PF CF LSB MSB 2-31 Nguyen Van Tho – Duy Tan University NHĨM LỆNH LOGIC, DỊCH & QUAY Lệnh SHR • Lệnh dịch phải logic • Cú pháp: SHR Đích, CL (với số lần dịch lớn 1) SHR Đích, SHR Đích, số lần dịch (80286 trở lên) • Thực hiện: dịch phải đích CL bit • Lệnh thay đổi cờ SF, ZF, PF, CF mang giá trị LSB MSB LSB CF Chú ý: Trong lệnh dịch quay, tốn hạng khơng ghi đoạn 2-32 16 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH XUẤT/ NHẬP CỔNG Lệnh IN • Dùng để đọc byte byte liệu từ cổng vào ghi AL AX • Cú pháp: IN Acc, Port • Lệnh khơng tác động đến cờ • Ví dụ: ¾ IN AX, 00H ¾ IN AL, 0F0H ¾ IN AX, DX Lệnh OUT • • • • Dùng để đưa byte byte liệu từ ghi AL AX cổng Cú pháp: OUT Port, Acc Lệnh khơng tác động đến cờ Ví dụ: ¾ OUT 00H, AX ¾ OUT F0H, AL 2-33 ¾ OUT DX, AX Nguyen Van Tho – Duy Tan University NHÓM LỆNH THAO TÁC CHUỖI Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW • Dùng để chuyển phần tử chuỗi sang chuỗi khác • Cú pháp: MOVS chuỗi đích, chuỗi nguồn MOVSB MOVSW • Thực hiện: ¾ DS:SI địa phần tử chuỗi nguồn ¾ ES:DI địa phần tử chuỗi đích ¾ Sau lần chuyển SI=SI +/- 1, DI=DI +/- SI=SI +/- 2, DI=DI +/2 tuỳ thuộc vào cờ hướng DF 0/1 • Lệnh khơng tác động đến cờ • Ví dụ: MOVS byte1, byte2 2-34 17 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University NHÓM LỆNH ĐIỀU KHIỂN ¾ Lệnh nhảy khơng điều kiện : JMP ¾ Lệnh nhảy có điều kiện : ¾Lệnh vịng lặp : LOOP ¾Lệnh gọi chương trình : CALL ¾Lệnh xử lý ngắt : INT, IRET 2-35 Nguyen Van Tho – Duy Tan University LỆNH NHẢY KHÔNG ĐIỀU KIỆN JMP Dùng để nhảy tới địa nhớ loại: nhảy ngắn, gần xa • Lệnh nhảy ngắn (short jump) ¾Phạm vi nhảy: -128 đến 127 bytes so với lệnh lệnh JMP ¾Thực hiện: IP=IP + độ lệch ¾Ví dụ: XOR BX, BX Nhan: MOV AX, ADD AX, BX JMP SHORT Nhan 2-36 18 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LỆNH NHẢY KHÔNG ĐIỀU KIỆN JMP • Lệnh nhảy gần (near jump) ¾Phạm vi nhảy: ± 32 Kbytes so với lệnh lệnh JMP ¾Ví dụ: XOR BX, BX XOR CX, CX XOR CX, CX MOV AX, MOV AX, ADD AX, BX ADD AX, BX ADD AX, BX JMP NEAR Nhan JMP NEAR PTR BX JMP WORD PTR [BX] Nhan: MOV AX, Thực hiện: IP=IP+ độ lệch E IP=BX Độ lệchLo Độ lệchHi IP=[BX+1] [BX] Nhảy gián tiếp 2-37 Nguyen Van Tho – Duy Tan University LỆNH NHẢY KHÔNG ĐIỀU KIỆN JMP ã Lnh nhy xa (far jump) ắ di lnh bytes nhảy tới nhãn: ¾Phạm vi nhảy: nhảy đoạn mã nhảy sang đoạn mã khác ¾Ví dụ: EXTRN Nhan: FAR Next: MOV AX, ADD AX, BX JMP FAR PTR Next JMP FAR Nhan Thực hiện: IP=IP nhãn CS=CS nhãn XOR CX, CX MOV AX, ADD AX, BX JMP DWORD PTR [BX] IP = [BX+1][BX] CS= [BX+3][BX+2] 2-38 19 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LỆNH NHẢY KHƠNG ĐIỀU KIỆN JMP Tóm tắt : FFFFFH Đoạn mã Nhảy xa +127 Đoạn mã Nhảy ngắn JMP Nhảy gần -128 00000H 2-39 Nguyen Van Tho – Duy Tan University LỆNH NHẢY CÓ ĐIỀU KIỆN Đối với số có dấu : JE or JZ, JNE or JNZ, JG, JGE, JL, JLE , JC, JNC Đối với số không dấu : JA, JB, JAE, JBE , JC, JNC Nhảy thực phụ thuộc vào cờ Là lệnh nhảy ngắn Ví dụ: Nhan1: XOR BX, BX Nhan2: MOV AX, CMP AL, 10H JNE Nhan1 JE Nhan2 2-40 20 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LỆNH VÒNG LẶP LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ Là lệnh phối hợp DEC CX JNZ XOR AL, AL XOR AL, AL XOR AL, AL MOV CX, 16 MOV CX, 16 MOV CX, 16 Lap: INC AL LOOP Lap Lặp đến khí CX=0 Lap: INC AL Lap: INC AL CMP AL, 10 CMP AL, 10 LOOPE Lap LOOPNE Lap Lặp đến khí CX=0 AL10 Lặp đến khí CX=0 AL=10 2-41 Nguyen Van Tho – Duy Tan University LỆNH GỌI CHƯƠNG TRÌNH CON CALL Dùng để gọi chương trình Có loại: CALL gần CALL xa • CALL gần (near call): tương tự nhảy gần ¾Gọi chương trình đoạn mã Tong PROC NEAR ADD AX, BX ADD AX, CX RET Tong ENDP CALL Tong Cất IP vào ngăn xếp IP=IP + dịch chuyển RET: lấy IP từ ngăn xếp Tong PROC NEAR ADD AX, BX ADD AX, CX RET Tong ENDP MOV BX, OFFSET Tong CALL BX CALL WORD PTR [BX] Cất IP vào ngăn xếp IP= BX RET: lấy IP từ ngăn xếp Cất IP vào ngăn xếp IP= [BX+1] [BX] RET: lấy IP từ ngăn 2-42 xếp 21 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LỆNH GỌI CHƯƠNG TRÌNH CON CALL • CALL xa (far call): tương tự nhảy xa ¾Gọi chương trình ngồi đoạn mã Tong PROC FAR CALL DWORD PTR [BX] ADD AX, BX ADD AX, CX RET Tong ENDP CALL Tong Cất CS vào ngăn xếp Cất IP vào ngăn xếp IP = [BX+1][BX] CS= [BX+3][BX+2] RET: lấy IP từ ngăn xếp lấy CS từ ngăn xếp Cất CS vào ngăn xếp Cất IP vào ngăn xếp IP=IP Tong CS =CS Tong RET: lấy IP từ ngăn xếp lấy CS từ ngăn xếp 2-43 Nguyen Van Tho – Duy Tan University LỆNH NGẮT INT & IRET INT gọi chương trình phục vụ ngắt (CTCPVN) Bảng vector ngắt: Kbytes 00000H đến 003FF H • • • • 256 vector ngắt vector bytes, chứa IP CS CTCPVN 32 vector đầu dành riêng cho Intel 224 vector sau dành cho người dùng Cú pháp: INT Number Ví dụ: INT 21H gọi CTCPVN DOS 2-44 22 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LỆNH NGẮT INT & IRET Thực INT: • • • • • Cất ghi cờ vào ngăn xếp IF=0 (cấm ngắt khác tác động), TF=0 (chạy suốt) Cất CS vào ngăn xếp Cất IP vào ngăn xếp IP=[N*4], CS=[N*4+2] Gặp IRET: • Lấy IP từ ngăn xếp • Lấy CS từ ngăn xếp • Lấy ghi cờ từ ngăn xếp 2-45 Nguyen Van Tho – Duy Tan University DỊCH CHƯƠNG TRÌNH 2-46 23 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University KHUNG CHƯƠNG TRÌNH CODE segment para public ‘code’ assume cs:code,ds:data,ss:stack Main PROC Main ENDP CODE ENDS DATA segment para public 'data‘ DATA ENDS STACK segment stack 'stack‘ STACK ENDS END Main 2-47 MODEL SMALL STACK DATA < Các khai báo biến > CODE Main PROC < Thân chương trình chính> Main ENDP < Khai báo chương trình con> END Nguyen Van Tho – Duy Tan University LẬP TRÌNH CHO 8086 Ví dụ : Hiện chữ “Hello” hình Model Stack Data Small 100 MSG Code MAIN MAIN DB ‘Hello! $’ Proc ;khới đầu cho DS MOV AX, @data MOV DS, AX ;Hiển thị lời chào dùng hàm ngắt 21h MOV AH,9 LEA DX, MSG INT 21H ;trở DOS dùng hàm 4Ch,ngắt 21h MOV AH, 4CH INT 21H Endp END MAIN 2-48 24 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University LẬP TRÌNH CHO 8086 Ví dụ : Hiển thị 50 kí tự ‘$’ hình khởi tạo đếm cơng việc giảm đếm đếm=0? Đ S Model Small Stack 100 Data MSG DB ‘Hello! $’ Code MAIN Proc MOV CX, 50 ;số lần lặp MOV AH,2 ;hàm hiển thị MOV DL,’$’ ;DL chứa ký tự cần hiển thị HIEN: INT 21H ; Hiển thị LOOP HIEN ;trở DOS dùng hàm 4Ch,ngắt 21h MOV AH, 4CH INT 21H MAIN Endp END MAIN 2-49 Nguyen Van Tho – Duy Tan University LẬP TRÌNH CHO 8086 Ví dụ : Nhập chuỗi ký tự từ bàn phím người dùng ấn phím Enter Đếm hiển thị số ký tự nhập ( < 10 ký tự) S Điều kiện Đ công việc XOR CX, CX MOV AH,1 TIEP: INT 21H CMP AL, 13 JE End_while INC CX JMP TIEP End_while: MOV AH,2 MOV DX,CX ADD DL,30H INT 21H ;CX=0 ;hàm đọc ký tự từ bàn phím ; đọc ký tự vào AL ; đọc CR? ; đúng, thoát ; sai, thêm ký tự vào tổng ; đọc tiếp ; hàm hiển thị ký tự ; đổi sang mã ASCII ; hiển thị ¾ Cải tiến chương trình để hiển thị số ký tự >10 ký tự 2-50 25 ... tương thích ngược : chương trình vi? ??t cho 8088/8086 chạy xử lý 8 038 6 cao ƒ Các chương trình vi? ??t cho 8 038 6 khơng chạy máy tính có xử lý thấp 2-8 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho... ¾Sau lần so sánh SI=SI + /- 1, DI=DI + /- SI=SI + /- 2, DI=DI + /- tuỳ thuộc vào cờ hướng DF 0/1 • Cập nhật cờ AF, CF, OF, PF, SF, ZF 2-2 2 11 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy... chuyển SI=SI + /- 1, DI=DI + /- SI=SI + /- 2, DI=DI +/2 tuỳ thuộc vào cờ hướng DF 0/1 • Lệnh khơng tác động đến cờ • Ví dụ: MOVS byte1, byte2 2 -3 4 17 DuyTan University Kỹ thuật Vi xử lý Nguyen Van

Ngày đăng: 09/05/2021, 14:26

Từ khóa liên quan

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

Tài liệu liên quan