DIV BX OVERFLOW
Toán tử giạ INCLUDE
7.2.1 Chê đoơ địa chư gián tiêp baỉng thanh gh
Trongchêđoơđịachưgiántiêpbaỉngthanhghi,địachưoffsetcụatoánháng đượcchưátrong1thanhghi.Chúngtanóiraỉngthanhghilàcontrỏ(pointer)cụavị trí nhớ.Dángtoánhánglà[register].TrongđóregisterlàcácthanhghiBX,SI,DI ,BP.ĐôivớicácthanhghiBX,SI,DIthìthanhghi đốnlàDS.Cònthanhghi đốncụaBPlàSS.
Vídú:giạsửraỉngSI=100hvàtừnhớtáiđịachưDS:0100h cónoơidunglà 1234h.Leơnh MOV AX,[SI] sẽ copy1234h vàoAX.
Giạsửraỉngnoơidungcácthanhghivànoơidungcụaboơnhớtươngứng lànhư sau:
Ví dú 1:
Hãychobiêtleơnhnàosauđađylàhợplý,offsetnguoănvàkêtqụacụacác leơnhhợplý. a. MOV BX,[BX] b. MOV CX,[SI] c. MOV BX,[AX] d. ADD [SI],[DI] e. INC [DI]
Chương 7: Mạng và các chê đoơ địa chư 83 Lời
giại :
a. 1000h 1BACh
b. 2000h 20FFh
c. illegalsourceregister (mustbeBX,SI,DI) d. illegalmemory-memoryadd
e. 3000h 031Eh
Ví
dú 2 : Viêtđốn mã đeơcoơngvàoAX 10phaăntử cụamoơtmạngW định nghĩanhưsau:
W DW 10,20,30,40,50,60,70,80,90,100Giại: Giại:
XOR AX,AX ;xoá AX
LEA SI,W ;SItrỏtới địachưcơsở(base)cụamạmgW. MOV CX,10 ;CXchưásôphaăntửcụamạng
ADDITION:
ADD AX,[SI] ;AX=AX+phaăntửthứnhât ADD SI,2 ;taíngcontrỏleđn2
LOOP ADDITION ;laịp Ví
dú 3: Viêt thụtúcđeơđạongượcmoơtmạngntừ.Đieăunàycónghĩa làphaăntửthứnhâtsẽđoơithànhphaăntửthứn,phaăntửthứhaisẽthànhphaăntửthứ n-1... ChúngtasẽdùngSInhư làcontrỏ cụamạngcònBXchứasôphaăntửcụa mạng(ntừ).
Giại:Sôlaăn traođoơilàN/2laăn.Nhớ raỉngphaăntửthứNcụamạngcóđịa chưA+2x(N-1)
Đốnmãnhưsau: REVERSE PROC ;input:SI=offsetofarray ; BX=numberofelements ;output:reversearray
PUSH AX ;câtcácthanhghi PUSH BX
PUSH CX PUSH SI PUSH DI ;DIchưtớiphaăntửthứn
Chương 7: Mạng và các chê đoơ địa chư 84 MOV DI,SI ;DItrỏtớitừ thứnhât
MOV CX,BX ;CX=BX=n:sôphaăntử DEC BX ;BX=n-1
SHL BX,1 ;BX=2x(n-1)
ADD DI,BX ;DI=2x(n-1)+offsetcụamạng:chưtớiphaăntử ;thứn
;traođoơicácphaăntử XCHG_LOOP:
MOV AX,[SI] ;lây1phaăntửởnửathâpcụamạng XCHG AX,[DI] ;đưanóleđnnửacaocụamạng MOV [SI],AX ;hoànthànhtraođoơi
ADD SI,2 ;SIchưtới phaăntửtiêp theocụamạng SUB DI,2 ;DIchưtớiphaăntửthứn-1
LOOP XCHG_LOOP POP DI POP SI POP CX POP BX POP AX RET REVERSE ENDP