Nguyên văn bởi thaithanhtam
Xem bài viết
tôi sẽ lấy một ví dụ rất đơn giản và trực quan để bạn hiểu....
so sánh số "1"và "2" rõ ràng bạn biết kết quả của nó rùi !! vấn đề là làm thế nào..... có rất nhiều giải pháp để so sánh với nhứng lệnh số học.. nó thuần túy là toán thôi bạn tự ngĩ thêm như chia....chẳng hạn.. hay lệnh trừ.....
nhưng những cách đó tuy cho cờ nhớ nhưng lại thay đổi kết quả của toán hạng nguồn và đích ....... nó không cần thiết nếu mình chỉ cần so sánh.........oke vậy thì nên dùng lệnh :"cjne "sẽ tốt hơn........
trở lại ví dụ trên tôi đang nói tôi sẽ làm như thế này nhé......
mov A,#2 ;đưa số 2 vào thanh ghi A
cjne A,#1,$+3 ; so sánh số "2" với "1"
jc label bạn để ý lệnh cjne nó sẽ lấy nội dung của thanh ghi A lúc này trừ đi cho số một .....rõ ràng nếu A<1--->có cờ nhớ tức (C=1),,,,còn ngược lại nó sẽ không có cờ nhớ tức( C=0 ) nhưng nhớ là chỉ trong phạm vi đó thôi nhé nó chỉ lấy cờ nhớ có hoặc không còn sau lệnh này thì thanh ghi A vân không thay đổi là nó có giá trị là 2....
còn cái "$+3" là cái nhãn bắt buộc của cấu trúc nhảy " JXXXX" chứ "J" tức là jump đó bạn.......
cái nhãn "label" tùy bạn bạn có thể đặt tên của bạn cũng được nhưng nhớ nó cũng có luật đó....
cái "$+3" là kết quả so sánh dẫu có như thế nào nó cũng làm lệnh kế tiếp...bạn lưu ý nhé......
cụ thể trong ví dụ này nó sẽ nhảy đến lệnh "jc label" có nghĩa là nó sẽ nhảy đến cái nhãn mà bạn đặt tên...nếu có cờ nhớ là (C=1) /..... còn ở nhãn đó bạn làm gì thì tùy bạn.........
ngược lại nếu không có cờ nhớ.....(C=0) thì lệnh "jc lable" trong ví dụ trên không được thỏa mãn nó sẽ bị bỏ qua để làm lệnh kế tiếp sau lệnh "jc label"
nó chỉ là ví dụ đơn giản mong bạn hiểu cách so sánh 2 giá trị với nhau... còn khá nhiều cấu trúc so sánh dạng trên nhưng nguồn và đích co thể là địa chỉ gián tiếp.... địa chỉ trực tiếp,.. thanh ghi...... bạn tự tìm hiểu thêm......
tui nghĩ asm học cũng không khó nó giống như c vậy mọi thứ đều dựa trên sự logíc......mỗi một cấu trúc bạn học thì nên chịu khó hiểu cái cách nó hoạt động.... để từ đó sẽ nhớ rất lâu....... và có thể hiểu đước các biến thể.....như lệnh jcne chẳng hạn.. có khoảng gần cả chục cái...gì đó bạn nên tổng hợp và biết cách so sánh giữa các cấu trúc.....chào bạn .....
Comment