banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Memory access in ASM on Linux?  XML
  [Programming]   Memory access in ASM on Linux? 12/10/2010 20:17:24 (+0700) | #1 | 222697
zjm_zjm
Member

[Minus]    0    [Plus]
Joined: 26/07/2009 01:53:09
Messages: 159
Location: hhhhhh
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Hiện tại mình đang nghiên cứu thâm sâu về asm, nhưng có 1 số thứ trừu tượng quá muốn các đàn anh giải thích dùm mình. Như tieu đề mình đã nêu đó là vấn đề memory access. smilie

Mình có 1 đoạn code như trên

Code:
ORG 100h           ;
MOV AX, 0B800h     ; đưa B800h vào ax
MOV DS, AX         ; copy value of AX to DS. 
MOV CL, 'A'        ; set CL to ASCII code of 'A', it is 41h. 
MOV CH, 1101_1111b ; set CH to binary value. 
MOV BX, 15Eh       ; set BX to 15Eh. 
MOV [BX], CX       ; copy nội dung CX vào địa chỉ BX
RET


[BX] ===> Cái này mình hiểu

Nhưng

to access memory we can use these four registers: BX, SI, DI, BP.
combining these registers inside [ ] symbols, we can get different memory locations. these combinations are supported (addressing modes):  


Code:
[BX + SI]
[BX + DI]
[BP + SI]
[BP + DI]

Sự phối hợp giữa BX và SI và DI thật sự quá trừu tượng đối với mình, anh em cho mình 1 cái ví dụ cho dễ hiểu và chức năng của 2 thanh ghi SI và DI với nha. 999 thanks smilie
[Up] [Print Copy]
  [Programming]   Memory access in ASM on Linux? 12/10/2010 22:16:37 (+0700) | #2 | 222708
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
- SI, DI thì cũng chỉ là register (tìm hiểu xem register này thường làm gì ?!)

mov AL, [ BX + SI ]
vs
mov AL, [BX]

khác gì nhau ? Bạn thấy trừu tượng ở chỗ nào ? Thử tìm hiểu thêm về các addressing mode của x86
-- w~ --
[Up] [Print Copy]
  [Programming]   Memory access in ASM on Linux? 12/10/2010 22:56:50 (+0700) | #3 | 222711
zjm_zjm
Member

[Minus]    0    [Plus]
Joined: 26/07/2009 01:53:09
Messages: 159
Location: hhhhhh
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
mov AL, [BX]

==> Ví dụ BX có địa chỉ 100h và chứa giá trị 21h

câu lệnh trên nó sẽ đưa địa chỉ BX vào AL, và bây h AL sẽ trỏ về 100h và có giá trị 21h

mov AL, [ BX + SI ]

Ví dụ
BX có địa chỉ là 100h
SI có địa chỉ là 054h

Nó sẽ cộng tổng 2 địa chỉ lại và đưa vào AL

Không biết có đúng không :-s



[Up] [Print Copy]
  [Programming]   Memory access in ASM on Linux? 13/10/2010 03:17:05 (+0700) | #4 | 222717
[Avatar]
VTC_A1
Member

[Minus]    0    [Plus]
Joined: 18/08/2008 13:27:57
Messages: 41
Offline
[Profile] [PM]
Hai thanh ghi DI (destnation index) và SI (Source index) là hai thanh ghi chỉ số thường dùng trong xử lý chuỗi, truy cập dữ liệu các mảng. Còn các cái này
-----------------
[BX + SI]
[BX + DI]
[BP + SI]
[BP + DI]
-----------------
chẳng qua cũng chỉ là các hình thức định địa chỉ based indexed thôi smilie. Với based ở đây là bx và bp xác định segment lần lượt là ds và ss, indexed là hai thanh ghi si và di đó bạn
[Up] [Print Copy]
  [Programming]   Memory access in ASM on Linux? 13/10/2010 08:30:16 (+0700) | #5 | 222722
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

zjm_zjm wrote:
mov AL, [BX]

==> Ví dụ BX có địa chỉ 100h và chứa giá trị 21h

câu lệnh trên nó sẽ đưa địa chỉ BX vào AL, và bây h AL sẽ trỏ về 100h và có giá trị 21h

mov AL, [ BX + SI ]

Ví dụ
BX có địa chỉ là 100h
SI có địa chỉ là 054h

Nó sẽ cộng tổng 2 địa chỉ lại và đưa vào AL

Không biết có đúng không :-s



 

Sai lầm cơ bản rồi, "AL trỏ về" và "AL có giá trị" là thế nào ?

Đọc quyển "The Art of Assembly Language Programming"

http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html - Chapter 4
-- w~ --
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|