130 likes | 257 Views
การกำหนดค่าข้อมูลและคำสั่งพื้นฐาน. คำสั่งเทียมกำหนดค่าข้อมูล. Directive. รูปแบบ [name] Dn Expression DB(define byte) DW(define word) DD(define doubleword). ค่าที่กำหนดให้ข้อมูล. ชื่อตัวแปร. ตัวอย่าง. DATA1 DB 25 ; เลขฐานสิบ DATA2 DB 10001001B ;เลขฐานสอง
E N D
การกำหนดค่าข้อมูลและคำสั่งพื้นฐานการกำหนดค่าข้อมูลและคำสั่งพื้นฐาน
คำสั่งเทียมกำหนดค่าข้อมูลคำสั่งเทียมกำหนดค่าข้อมูล Directive รูปแบบ [name] Dn Expression • DB(define byte) • DW(define word) • DD(define doubleword) ค่าที่กำหนดให้ข้อมูล ชื่อตัวแปร
ตัวอย่าง DATA1 DB 25 ;เลขฐานสิบ DATA2 DB 10001001B ;เลขฐานสอง DATA3 DB 12H ;เลขฐานสิบหก ORG 0010H DATA4 DB ‘2591’ ;รหัส ASCII ORG 0018H DATA5 DB ? ;ที่ว่าง DATA6 DB ‘My name is T-WAT’
คำสั่งกำหนดค่าคงที่ ใช้คำสั่ง EQU ตัวอย่าง COUNT EQU 25 หลังจากนั้นอาจทำคำสั่งต่อไปนี้ MOV CX,COUNT DATA1 DB COUNT DATA2 DB COUNT
คำสั่งพื้นฐาน • MOV (Move)ใช้ย้ายข้อมูลจากต้นทางไปยังปลายทาง • MOV AX , WORD1 • MOV AX , BX • MOV AH , ‘A’ • MOV WORD2 , WORD1 • XCHG (exchange)ใช้สลับค่าข้อมูลระหว่างรีจีสเตอร์สองตัว • XCHG destination , source • XCHG AH , BL ทำไม่ได้
คำสั่งพื้นฐาน (ต่อ) • ADD (Addition) ADD destination , source • ADD AL , BL • ADD AL , 27H • ADD CL , [BX] • ADC (ADD with Carry) • ADC AX , BX • ADC AX , [BX] ;ถ้าหาก AX = 0AEFFH , BX = 1023H ;ค่าใน DS : 1023 เป็น 4BBCH และ แฟลกเป็น 1 ;AX = 0AEFFH + 4BBCH + 1 = 0FABCH
คำสั่งพื้นฐาน (ต่อ) • SUB (Subtract) SUB destination , source • SUB AL , BL • SUB TOTAL , 27H • SUB TOTAL , AL • SBB (SuBtract with Borrow) • SBB AX , BX
คำสั่งพื้นฐาน (ต่อ) • CMP (CoMPare) CMP operand_1 , operand_2 • CMP AL , 38H • CMP AL , BL • CMP TOTAL , AL • INC (Increment) INC destination • INC AX • DEC (Decrement) DEC destination • DEC AX
คำสั่งพื้นฐาน (ต่อ) • NEG ทำ 2’s Complement กับตัวเลขแบบคิดเครื่องหมาย • NEG destination ตัวอย่าง NEG BX หลังทำคำสั่ง FFFE 0002 ค่าใน BX ก่อนทำคำสั่ง
แฟลก (flag) • แฟลกตัวทด (carry flag) ตัวเลขแบบไม่คิดเครื่องหมายมีค่าเกินกว่าที่รีจีสเตอร์จะเก็บ จะเซต MOV AL , 0FFH ADD AL , 4H ;แฟลกตัวทดจะเซ็ต • แฟลกโอเวอร์โฟลว์ (overflow flag) ตัวเลขแบบคิดเครื่องหมายมีค่าเกินกว่าที่เก็บผลลัพธ์ จะเซต MOV BL , 4H ADD BL , 7FH ;แฟลกโอเวอร์โฟลว์จะเซต
แฟลก (flag) • แฟลกเครื่องหมาย (sign flag) ถ้าผลลัพธ์เป็นบวกบิตแฟลกจะเป็น “0” • แฟลกศูนย์ (zero flag) แฟลกนี้จะเป็น “0” ถ้าผลลัพธ์ไม่เป็นศูนย์ ถ้าผลลัพธ์เป็นศูนย์ จะเป็น “1” • แฟลกพาริตี้ (parity flag)
คำสั่งคูณเลข • MUL , IMUL (Integer MULtiplication) • IMUL register • IMUL memory • MUL register ถ้าเป็นแบบ 8 บิต ตัวตั้งจะอยู่ใน AL อีกค่าหนึ่งอยู่ในโอเปอแรนด์ ผลลัพธ์ที่ได้จะเก็บอยู่ใน AX
คำสั่งหารเลข • DIV , IDIV • การหารแบบ 32 บิต ตัวตั้งจะเก็บใน DX , AX ตัวหารเก็บในโอเปอแรนด์ ผลลัพธ์เก็บใน AX เศษเก็บใน DX • การหารแบบ 16 บิต ตัวเลข 16 บิตเก็บใน AX ตัวหารเก็บในโอเปอแรนด์ ผลลัพธ์ที่ได้เก็บใน AL เศษเก็บใน AH