CS344-321 Assembly Language Programming Period 20
Data Transfer Instructions mov destination,source ขนาดของข้อมูลต้องตรงกัน คือ 8 บิตกับ 8 บิต และ 16 บิตกับ 16 บิต เช่น mov ax,bx mov al,temp เมื่อ temp db ? เป็นต้น
กรณีของ memory ถ้ามีความจำเป็นต้องใช้ข้อมูลที่มีขนาดไม่ตรงกับที่ define เช่น mov al,x เมื่อ x dw ? ไม่สามารถทำได้ แต่ถ้าต้องการข้อมูลตรงตำแหน่ง x ขนาดหนึ่งไบต์จริงๆ สามารถทำได้ สองลักษณะ คือ mov al,byte ptr x เมื่อ x dw ? หรือ mov al,xb เมื่อ xb label byte x dw ?
อีกตัวอย่างหนึ่ง เช่น mov al,byte ptr y mov ah,byte ptr y+1 เมื่อ y dw ?
push pop การ push เพื่อเก็บค่าชั่วคราว และ การ pop เพื่อต้องการค่าเดิม ให้ทำสลับกัน ดังเช่น push ax push bx push cx … pop cx pop bx pop ax
xchg xlat in out lea lds les
lahf sahf pushf popf flags มีบิตต่างๆ ดังนี้ 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 OF DF IF TF SF ZF AF PF CF ต้องการเปลี่ยนแปลงที่บิต 00-07 สามารถใช้คำสั่ง lahf กับ sahf ได้ ถ้าต้องการเปลี่ยนแปลงที่ บิตใดๆ สามารถใช้คำสั่ง pushf กับ popf ดังเช่น
ต้องการเปลี่ยน OF ให้เป็น 0 โดยที่บิตอื่นๆ ไม่เปลี่ยนแปลง ทำดังนี้ pushf pop ax and ax,1111011111111111b หรือ and ax,0F7FFH push ax popf หมายเหตุ ถ้าต้องการเปลี่ยนที่บิตใดให้เป็น 0 ทำได้โดยการ and ด้วย 0 ที่ตำแหน่งนั้น ส่วนที่บิตอื่นเป็น 1 ถ้าต้องการเปลี่ยนที่บิตใดให้เป็น 1 ทำได้โดยการ or ด้วย 1 ที่ตำแหน่งนั้น ส่วนที่บิตอื่นเป็น 0