Bài giảng môn Hợp ngữ

Chia sẻ: Bui Duc To | Ngày: | Loại File: PPT | Số trang:45

0
46
lượt xem
7
download

Bài giảng môn Hợp ngữ

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đổi phần nguyên : chia cho cơ số và kết quả :thương số và dư số. If thương số bằng 0 thì tổ hợp các dư số chính là số cần tìm ngược lại thì tiếp tục chia nũa

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn Hợp ngữ

  1. Hợp ngữ Khoa Điện tử - Viễn thông Trương Văn Thắng
  2. Giới thiệu Các khái niệm hệ thống số Chuyển đổi cơ số Các thanh ghi của intel 8088, 8086
  3. 1/CÁC HỆ THÔNG SỐ • HỆ 10 HỆ 16 HỆ 2 0 0 0 1 1 1 2 2 10 3 3 11 4 4 100 5 5 101 6 6 110 7 7 111 8 8 1000 9 9 1001 10 A 1010 11 B 1011 12 C 1100
  4. 2/Chuyển đổi cơ số • a/Chuyển từ cơ số b sang cơ số thập phân(10) Ví dụ: chuyển từ cơ số 10 sang số 10 12310 =100+20+3=1X102+2X10+3X100 dn-1dn-2….d1d0.d-1….d-m (*) b là cơ số di là chỉ số
  5. Các ví dụ: * Đổi từ nhị phân sang thập phân 1011.012 --> 1X23+1X21+1X20+1X2-2 * Đổi từ thập lục phân sang thập phân A4B516 10X163+4X162+11X161+5X160 =40960 + 1024 +176 + 5
  6. Chuyển từ thập phân sang cơ số b dn-1bn-1+dn-2bn-2+…+d1b1+d0 (***) d-1b-1+d-2b-2+….+ d-mb-m (****) Đổi phần nguyên : chia cho cơ số  kết quả :thương số và dư số. If thương số bằng 0 thì tổ hợp các dư số chính là số cần tìm ngược lại thì tiếp tục chia nũa Đổi phần lẻ: khi nhân 2 số thì được 1 tích
  7. CÁC VÍ DỤ Đổi số 26 sang số nhị phân 26/2 =13 dư 0 13/2 =6 dư 1 6 /2 =3 dư 0 3 /2 =1 dư 1 1 /2 = 0 dư 1 2610 110102 Đổi số 0.25 10sang nhị phân 0.25 x 2 =0.5 lẻ 0.5 nguyên 0 0.5 x 2 = 1.0 lẻ 0 nguyên 1 0.2510 0.012 Đổi 27110 sang số thập lục phân 271 / 16 =16 dư 15 16 / 16 = 1 dư 0 1 /16 = 0 dư 1 27110  10F16
  8. Đổi nhị nhân sang thập lục phân và ngược lại • Nhị phân thành thập lục phân 11001110.1102  CD.C • Thập lục phân sang nhị phân 1AF.8 16 000110101111.10002
  9. 3/Các thanh ghi của CPU 8088(8086) • Trong CPU intel có 14 thanh ghi, chia thành 4 nhóm a/ Nhóm thanh ghi đa năng: 4 thanh ghi, 16bits AX( AH và AL) (Accumulato ) BX(BH và BL) (Base ) CX(CH và CL) (Count ) DX(DH và DL) (Data)
  10. • Chức năng riêng: AX(AH&AL): Có ý nghĩa phép nhân và chia BX: Dùng làm con trỏ để tro trong lòng dữ liệu CX:Chứa số lần lập lai DX: Chứa địa chỉ của một cổng nào đó
  11. b/ Nhóm thanh ghi segment(đoan) • Có 4 thanh ghi 16 bits. Dùng để quản lý một vùng nhớ có kích thước 64 k bytes Thanh ghi CS (code segment): quản lý một đoạn code của chương trình Thanh ghi DS (date segment ):quản lý dữ liệu chương trình Thanh ghi ES(Extra data segment): quản lý dữ liệu chương trình Thanh ghi SS (stack segment): đoạn ngăn xếp
  12. c/Nhóm thanh ghi con trỏ • Gồm có 4 thanh ghi 16 bits * SI (Source index ) ,DI (destination index ): sử dụng làm con trỏ để trỏ dữ liệu trong chương trình (địa chỉ ) * SP (Stack pointer ):Dùng để chứa địa chỉ offset của đỉnh ngăn xếp( SS:SP ) . Nếu cấp vào stack thì SP=SP-2 còn lấy ra khỏi stack SP=SP+2 * BP ( Base pointer ) : Dùng để chỉ trong
  13. d/Nhóm thanh ghi khác • Có 2 thanh ghi 16 bits I P ( Intruction Pointer ) : Con trỏ lệnh ,dùng để chứa offser của lệnh tiếp theo ( CS:IP ). Khi thực hiện xong một lệnh thì IP=IP+ độ lớn của lệnh vừa thực hiện tính theo đợn vị O D I T S Z A PF CF là byte F F F F F F F Thanh ghi cờ : • + Các cờ phép toán : CF (cờ nhớ ), PF (cờ kiểm tra chẵn lẻ ) ,AF (cờ phụ ) ,
  14. 4/Segment và offset Segment là một đoạn vùng nhớ có kích thước 64kB. Được viết là Segment Offset là một đoạn vùng nhớ có kích thước 1byte. Được viết là Offset Đinh nghĩa một ô nhớ SEGMENT:OFFSET Đinh nghĩa một giá trị: SEGMENT:[OFFSET] Định nghĩa giá trị vật lý: GIÁ TRỊ VẬT LÝ= SEGMENT * 16 +OFFSET
  15. VÍ DỤ: • Cho segment là 40h • Cho offset là 63h ES40h, DI63h, vậy địa chỉ ô nhớ là ES:DI Giá trị ô nhớ là ES:[DI] • Cho segment là 40h • Cho offset là 13h • Địa vật lý là 40h*16+13h=0413h
  16. Dạng chương trình tổng quát • Có 2 dang chương trình: COM và EXE • Dạng .COM - Tất cả các thanh ghi segment trỏ cùng một chỗ: CS, DS, ES, SS -Chương trình bắt đầu: 100h( ORG 100H) - Tất cả lệnh nhảy là nhảy gần(NEAR) -Kích thước chương trình sử dụng là FFFFH – 100H
  17. Chương trình Dạng tổng quát .model small .code org 100h start: jmp main …………….. ……. main proc near …………. int 20h; Kết thúc chương trình (mov ax,4c00h int 21h
  18. Khai báo dữ liệu • Tên_biến kích_thước_dữ_liệu dữ liệu • kích_thước_dữ_liệu: db là một phần tử 1 byte dw là một phần tử 2 byets(1 word) dd là một phần tử 4bytes (1double word) ví dụ: ten_1 db 10, 12h ten_2 db ‘xin chao cac ban’, ‘$’
  19. Ví dụ:Viết chương trình in một thông báo. Dạng .COM .model small .code org 100h start: jmp main str1 db 10, 13,‘ xin chao cac ban’,10,13,’ $’ main proc near mov ah,09 lea dx,str1; (mov dx,offset str1) int 21h int 20h;(mov ax,4c00h; int 21h)
Đồng bộ tài khoản