DIV BX OVERFLOW
7.2.3 Tốn tử PTR và tốn tử giạ LABEL
Chương 7 : Mạng và các chê đ địa chư 87 Trong các chương trước chúng ta đã biêt raỉng các tốn háng cụa mt lnh phại cùng lối , tức là cùng là byte hoaịc cùng là từ .Nêu mt tốn háng là haỉng sơ thì ASM sẽ chuyeơn chúng thành lối tương ứng với tốn háng kia . Ví dú , ASM sẽ thực hin lnh MOV AX,1 như là lnh tốn háng từ . Tương tự , ASM sẽ thực hin lnh MOV BH,5 như là leơnh byte . Tuy nhieđn , leơnh
MOV [BX],1 là khođng hợp l vì ASM khođng biêt tốn háng chư bởi thanh ghi BX là tốn háng byte hay tốn háng từ . Cĩ theơ khaĩc phúc đieău này baỉng tốn tử PTR như sau :
MOV BYTE PTR [BX],1 ; tốn háng đích là tốn háng byte MOV WORD PTR [BX],1 ; tốn háng đích là tốn háng từ Ví dú : Thay ký tự t thành T trong chui được định nghĩa bởi :
MSG DB ‘this is a message’
Cách 1: Dùng chê đ địa chư gián tiêp thanh ghi :
LEA SI,MSG ; SI trỏ tới MSG MOV BYTE PTR [SI],’T’ ; thay t baỉng T Cách 2 : Dùng chê đ địa chư chư sô :
XOR SI,SI ; xoá SI MOV MSG[SI],’T ’ ; thay t bởi T
Ở đađy khođng caăn dùng PTR vì MSG là biên byte .
Nĩi chung tốn tử PTR được dùng đeơ khai báo lối ( type) cụa tốn háng . Cú pháp chung cụa nĩ như sau:
Type PTR address_expression Trong đĩ Type : byte , word , Dword
Addres_expression : là các biên đã được khai báo bởi DB,DW, DD . Ví dú chúng ta cĩ 2 khai báo biên như sau :
DOLLARS DB 1AH CENTS DB 52H
và chúng ta muơn di chuyeơn DOLLARS vào AL , di chuyeơn CENTS vào AH chư baỉng moơt leơnh MOV duy nhât . Cĩ theơ dùng lnh sau :
MOV AX, WORD PTR DOLLARS ; AL=DOLLARS và AH=CENTS
Tốn tử giạ LABEL
Cĩ mt cách khác đeơ giại quyêt vân đeă xung đt veă lối tốn háng như tređn baỉng cách dùng tốn tử giạ LABEL như sau đađy :
MONEY LABEL WORD DOLLARS DB 1AH CENTS DB 52H
Các lnh tređn đađy khai báo biên MONEY là biên từ với 2 thành phaăn là DOLLARS và CENTS . Trong đĩ DOLLRAS cĩ cùng địa chư với MONEY . Leơnh
MOV AX, MONEY Tương đương với 2 lnh :
Chương 7 : Mạng và các chê đ địa chư 88 MOV AL, DOLLARS
MOV AH, CENTS
Ví dú : Giạ sử raỉng sơ liu được khai báo như sau : .DATA A DW 1234h B LABEL BYTE DW 5678h C LABEL WORD C1 DB 9Ah C2 DB 0bch
Hãy cho biêt các lnh nào sau đađy là hợp l và kêt qụa cụa lnh . a. MOV AX,B
b. MOV AH,B c. MOV CX,C
d. MOV BX,WORD PTR B e. MOV DL,WORD PTR C f. MOV AX, WORD PTR C1 Giại : a. khođng hợp leơ b. hợp l , 78h c. hợp l , 0BC9Ah d. hợp leơ , 5678h e. hợp l , 9Ah f. hợp l , 0BC9Ah