Chuyển từ cơ số b sang cơ số thập phân(10)Đổ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 2 phần: phần nguyên và phần lẻ. If phần lẻ bằng 0 kết quả:tổ hợp các phần nguyên ngược lại tiếp tục nhân nữa
Hợp ngữ Khoa Điện tử - Viễn thông Trương Văn Thắng Giới thiệu Các khái niệm hệ thống số Chuyển đổi số Các ghi intel 8088, 8086 1/CÁC HỆ THƠNG SỐ • HỆ 10 0 1 2 3 4 5 10 11 12 13 14 15 A B C D E F HỆ 16 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 HỆ 2/Chuyển đổi số • a/Chuyển từ số b sang số thập phân(10) Ví dụ: chuyển từ số 10 sang số 10 12310 =100+20+3=1X102+2X10+3X100 d d ….d d d ….d n-1 n-2 -1 -m (*) b số d số i 0 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 + =42165 b/ Chuyển từ thập phân sang số b ví dụ: chuyển từ thập phân sang thập phân 123.5 (10) 123:10=12 dư 3; 12:10=1 dư 2; 1:10=0 dư 1; 0.5x10=1 lẻ Chuyển từ thập phân sang số b d bn-1+d bn-2+…+d b1+d (***) n-1 n-2 d b-1+d b-2+….+ d b-m -1 -2 -m (****) Đổi phần nguyên : chia cho số kết :thương số dư số If thương số tổ hợp dư số số cần tìm ngược lại tiếp tục chia nũa Đổi phần lẻ: nhân số tích phần: phần nguyên phần lẻ If phần lẻ kết quả:tổ hợp phần nguyên ngược lại tiếp tục nhân CÁC VÍ DỤ Đổi số 26 sang số nhị phân 26/2 =13 dư 13/2 =6 dư /2 =3 dư /2 =1 dư 1 /2 = dư 2610 110102 Đổi số 0.25 10sang nhị phân 0.25 x =0.5 lẻ 0.5 nguyên 0.5 x = 1.0 lẻ nguyên 0.2510 0.012 Đổi 27110 sang số thập lục phân 271 / 16 =16 dư 15 16 / 16 = dư /16 = dư 27110 10F16 Đổi nhị nhân sang thập lục phân ngược lại • Nhị phân thành thập lục phân 11001110.110 CD.C • Thập lục phân sang nhị phân 1AF.8 000110101111.1000 16 3/Các ghi CPU 8088(8086) • Trong CPU intel có 14 ghi, chia thành nhóm a/ Nhóm ghi đa năng: ghi, 16bits AX( AH AL) (Accumulato ) BX(BH BL) (Base ) CX(CH CL) (Count ) DX(DH DL) (Data) Chức năng: tính tốn chuyển số liệu • • Vùng nhớ sở chia thành nhiều vùng nhỏ: Bảng vectors ngắt Có loại ngắt: Ngắt BIOS ngắt DOS đặc biết là: Ngắt phần cứng Ngắt phần mềm Bảng vectors ngắt: 1KB từ 03FFh chứa bảng vector ngắt Mỗi vector ngắt chiếm 4byte, 2byte đầu chứa offset 2byte chứa segment đoạn chương trình thực ngắt Ngắt_offset=N*4 Ngắt_segment=N*4+2 Ví dụ: [4]=15h [5]=20h [6]=00 [7]=F0h Địa offset segment đoạn chương trình: F000h:2015h Vùng tham số BIOS • • Các thiết bị máy tính thơng qua CỔNG mà cổng thuộc địa vùng Địa vùng từ 40h:0 40h:xxxx 40h:000040h:6 : Địa RS 232( Ngõ COM) 40h:08h 40h:0eh : địa ngõ Printer(LPT) 40h:1Ah : trỏ đầu bàn phím(keyboard)(int 16h) 40h:1Ch :con trỏ cuối bàn phím(keyboard)(int 9) 40h:1Eh 40h:3Dh : Buffer bàn phím(16 words- 16 ký tự-địa thấp chứa mã ASCII địa cao mã SCAN CODE) 40h:63h : Địa xác định loại card hình (Mono 3B4h, Màn hình Màu 3D4h) Vùng tham số DOS • • Bắt đầu từ địa 50h:0xxxx:xxxx • • • Các (interrupts) ngắt Các thiết bị DOS thông qua tên :COM1; COM2; LTP1; LTP2; CON; ….V.V (IO.SYS) Config.sys (BUFFERS; FILES) Command trước nạp vào tách làm phần: COMMAND1 COMMAND2 -COMMAND1 chứa thành phần: thành phần kiểm tra command2 hay mất, ngắt: INT 24H lỗi Abort, Retry, Ignore; INT 23H CTRL_C; INT 22H kết thúc bình thường - COMMAND2 chức tất lệnh nội trú • Nằm tập tin if có AUTOEXEC.BAT Vùng nhớ mở rộng • • • Vùng có địa từ A0000hđến FFFFFh Có kích thước 384KB Có vùng sau: - A000h:0 buffers video chế độ đồ họa(graphics)cho cardv EGA, VGA * Độ phân giải(vi dụ:800x600) * pixell= bit(ví dụ: 8bits biểu diễn pixel) - B000h:0 buffers video chế độ text(mono) toa độ hình Ký tự= (hàng* 80+ cột) *2 Thuộc tính= (hàng* 80+ cột) *2+1 -B800h:0 buffers video chế độ đồ họa(graphics) cho card CGA -BC00h:0F400h:FFFFh: Dùng cho ROM mở rộng - FE00h:0: Dùng cho ROM BIOS F000h:FA6Eh: bảng ma trận ký tự, Một ký tự ma trận 8x8 Thủ tục(Procedure) • Cấu trúc Procedure Ten_procedure Proc near(far) … … ret ten_procedure • Ví dụ: endp in_chuoi proc near mov ah,09 int 21h ret in_chuoi endp Chương trình model small code org 100h start: jmp main st1 db ‘xin chao $’ in_chuoi proc near mov in_chuoi endp main proc near lea dx,st1 call in_chuoi int 20h … main endp end start Thủ tục(procedure) nhiều tập tin • Public ten_thu_tuc ten_Thu_tuc proc near(far) … …… ten_thu_tuc endp • Public ten_bien ten_bien kichthuoc liệu • Trong chương trình lớn khai báo sau EXTRN TEN_THU_TUC:NEAR(FAR) EXTRN TEN_BIEN :KÍCH THƯỚC(DB; DW; DD) Ví dụ:vidu1.asm • • • • • • • • • • model small code org 100h begin:jmp main1 public st1 st1 db "xin chao cac ban$" main1 proc near main1 endp end begin Ví du 2:vidu2.asm • • • • • • • • • • • • • model small code org 100h begin1:jmp main2 public in_chuoi in_chuoi proc mov ah,09 int 21h ret in_chuoi endp main2 proc near main2 endp end begin1 Ví du 3:vidu3.asm • • • • • • • • • • • • • • • model small code org 100h start:jmp main main proc near extrn st1:byte extrn in_chuoi:near lea dx,st1 call in_chuoi call ketthuc main endp ketthuc proc near int 20h ketthuc endp end start Dịch chương trình • • • • • Tasm vidu1; Tasm vidu2; Tasm vidu3; Tlink /t vidu3+vidu2+vidu1; IC 8255 CONTROL WORD ĐIỀU KHIỂN • Trước hoạt động: A A = 11 CW = 80h(10000000B) GỞI RA(OUTPUT) PORT A A A 00 0= PORT B A A =01 PORT C A A =10 TRUYỀN QUA NGÕ COM1 ... ….d d d ….d n-1 n-2 -1 -m (*) b số d số i 0 1X23+1X21+1X20+1X 2-2 * Đổi từ... từ thập phân sang số b d bn-1+d bn-2+…+d b1+d (***) n-1 n-2 d b-1+d b-2+….+ d b-m -1 -2 -m (****) Đổi phần nguyên : chia cho số kết :thương số dư số If thương số tổ hợp dư số số cần tìm ngược.. .Hợp ngữ Khoa Điện tử - Viễn thông Trương Văn Thắng Giới thiệu Các khái niệm hệ thống số Chuyển đổi số Các ghi intel 8088,