Bài của bạn khá thú vị! sonhn có 2 cách giải như sau:
- Cách 1: dùng vòng lặp while lặp lại 4 lần, mỗi lần thực hiện:
+ Kiểm tra xem bit thứ 8 của biến a có = 1 hay không
+ Nếu bằng 1 thì dịch biến a sang trái 1 bit, rồi OR với 1
+ Ngược lại, dịch biến a sang trái 1 bit, rồi OR với 0
- Cách 2: Sử dụng toán tử xoay bít của hợp ngữ --> xoay biến a sang trái 4 bit (thậm chí không cần dùng vòng lặp while!)Code:while (lặp lại 4 lần) { if(a & 0x80) //kiểm tra bit bên trái cùng (bit thứ 8) có bằng 1? a = a << 1 | 1; else a = a << 1 | 0; }
Ghi chú thêm: giá trị Hexa 0x80 --> đổi sang nhị phân = [1000 0000] (bít thứ 8 = 1, các bit còn lại = 0)Code:__asm rol a,4; //xoay biến a sang trái 4 bit