Bài thực hành số 4: Làm việc với số nguyên

2 599 1
Bài thực hành số 4: Làm việc với số nguyên

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài thực hành số 4 Làm việc với số nguyên Mục đích  Biết sử dụng các phép toán logic, số học  Biết cách đổi giữa các cơ số nhị phân, thập phân và thập lục phân Tóm tắt lý thuyết Phép toán trên bit 1. NOT : lệnh này đổi tác tố đích thành số bù. Không có cờ nào bị ảnh hưởng 2. AND (OR hoặc XOR) : AND (OR, XOR) Đích, nguồn Tất cả các cờ đều bị ảnh hưởng Chú ý : AND dùng để xóa các bit. OR dùng để bật các bit. XOR dùng để đảo bit. 3. Các lệnh dịch bit SHL và SHR : dịch các bit của toán hạng đích sang trái (hoặc phải) một hay nhiều bit. SHL (SHR) Đích, 1 hoặc SHL (SHR) Đích, CL CL là số lần dịch bit.Việc dịch bit trái (phải) tương ứng với phép nhân (chia) cho lũy thừa 2. Chú ý : Hiện tượng tràn số có thể xảy ra và cờ CF chứa bit cuối cùng bị dịch ra khỏi toán hạng.Để dịch bit với các số âm ta nên dùng SAL hoặc SAR tương ứng. 4. Các lệnh quay ROL và ROR : dịch các bit của toán hạng đích sang trái (phải) một hay nhiều bit theo vòng tròn. ROL (ROR) Đích, 1 hoặc ROL (ROR) Đích, CL CL là số lần quay bit, cờ CF sẽ chứa giá trị bit bị dịch ra khỏi toán hạng. Chú ý : Để dịch bit qua cờ nhớ ta dùng RCL hoặc RCR tương ứng. Ví dụ : Sử dụng lệnh ROL để đếm số bit 1 trong thanh ghi BX XOR AX,AX MOV CX,16 TOP : ROL BX, 1 JNC NEXT ; kiểm tra có phải là bit 0 không INC AX ; nếu không phải thì tăng số bit 1 NEXT: LOOP TOP ; lặp cho đến khi làm xong Lệnh số học 1. Cộng ADD, ADC : ADD (ADC) đích , nguồn Ví dụ : ADD AL , 10H -> AL = AL + 10H 2. Trừ SUB, SBB : SUB (SBB) đích , nguồn Ví dụ : SUB BL, 10H -> BL = BL – 10H Chú ý : Các phép toán cộng trừ trực tiếp giữa các ô nhớ là không hợp lệ. Ngoài ra ta cũng có thể sử dụng INC hoặc DEC để cộng hoặc trừ 1 đơn vị vào nội dung một ô nhớ hoặc một thanh ghi. 3. Nhân MUL, IMUL: MUL (IMUL) nguồn Lệnh MUL thực hiện phép nhân không dấu, còn IMUL là lệnh nhân có dấu. Nếu nguồn là byte (8 bit) thì kết quả chứa trong AX và AX = AL * nguồn. Nếu nguồn là word (16 bit) thì kết quả chứa trong DX:AX và DX:AX = AX * nguồn. Nếu nguồn là double (32 bit) thì kết quà chứa trong EDX:EAX và EDX:EAX = EAX * nguồn. 4. Chia DIV, IDIV : DIV (IDIV) số chia Lệnh DIV thực hiện chia không dấu, còn IDIV là lệnh chia có dấu. Nếu số chia là byte (8 bit) thì số bị chia là AX và kết quả gồm: phần dư = AH, phần thương = AL. Nếu số chia là word (16 bit) thì số bị chia là DX:AX và kết quả gồm phần dư = DX, phần thương = AX. Nếu số chia là double thì bị chia là EDX:EAX và kết quả gồm phần dư = EDX, phần thương = EAX. Chú ý : phải xoá giá trị DX hoặc EDX trước khi nhân, hoặc chia. Tài liệu tham khảo 1. Nguyễn Minh Tuấn, Giáo trình hợp ngữ - Chương 7, ĐHKHTN, 2002 2. Randal Hyde, The art of assembly language programming – Chapter 9. 3. Norton Guide 4. Dan Rollins, TechHelp v.6.0 Bài tập 1. Viết chương trình (VCT) đổi một số dạng thập phân sang thập lục phân. Ví dụ: Nhập một số hệ 10 : 26 Dạng thập lục phân: 1A 2. VCT nhập một số hệ thập phân rồi xuất ra biểu diễn dạng nhị phân của nó. Ví d ụ : Nhập số hệ 10: 26 Dạng nhị phân: 11010 3. VCT đổi một số dạng thập lục phân sang sang thập phân. Ví d ụ : Nhập số hệ thập lục phân: 1a (hoặc 1A) Dạng thập phân của nó là: 26 4. VCT đổi một số dạng thập lục phân sang nhị phân Ví d ụ : Nhập số hệ thập lục phân: 1a (hoặc 1A) Dạng biểu diễn nhị phân là : 00011010 5. VCT đổi một số dạng nhị phân sang thập phân Ví d ụ : Nhập một số nhị phân: 11010 Dạng thập phân là: 26 6. VCT đổi một số dạng nhị phân sang thập lục phân Ví d ụ : Nhập một số nhị phân: 11010 Dạng thập lục phân là: 1A 7. VCT “echo” với yêu cầu: nhập vào số nguyên dương n và một kí tự bất kì, sau đó trên màn hình xuất hiện n lần kí tự đó. Ví d ụ : Nhập một kí tự: k Nhập số lần n : 5  Kết quả : kkkkk. 8. VCT nhập vào hai số nguyên dương. Tính tổng, hiệu, tích, thương (phép div) và phần dư khi chia 2 số nguyên (phép mod) Ví d ụ : Nhập số thứ nhất : 14 Nhập số thứ hai : 16 Tổng hai số là : 30 Hiệu: -2 Tích: 224 Thương: 0 Phần dư: 14 Mở rộng 1. Tìm hiểu về BCD. Viết chương trình nhập 2 số nguyên ở hệ 10, chuyển sang BCD, tính tổng, hiệu và in kết quả ở hệ 10. 2. Liệu có thể viết chương trình tính được 20!, 30!, kết quả in ra ở dạng hex ? dạng cơ số 10 ? . Bài thực hành số 4 Làm việc với số nguyên Mục đích  Biết sử dụng các phép toán logic, số học  Biết cách đổi giữa các cơ số nhị phân, thập. vào hai số nguyên dương. Tính tổng, hiệu, tích, thương (phép div) và phần dư khi chia 2 số nguyên (phép mod) Ví d ụ : Nhập số thứ nhất : 14 Nhập số thứ

Ngày đăng: 24/10/2013, 19:15

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan