IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Вопрос по АСМу (http://www.imho.ws/showthread.php?t=13561)

CYD 20.10.2002 09:29

Вопрос по АСМу
 
Обьясните глупому сии строки плиз!:(



and byte ptr es:[bx+15h],11111000b

mov es:[bx+1Ah],dx

mov word ptr es:[bx+1Ch],0

mov word ptr es:[bx+16h],1111011110000000b

mov word ptr es:[bx+18h],1111111111111b


Хотябы в общих чертах...
Спасибо.

helldomain 20.10.2002 12:11

Tak.
Po ocheredi.

and byte ptr es:[bx+15h],11111000bh

AND - pobitowoe i. Srawniwaet dwa argumenta. Perwij: yacheika w pamyati razmerom 8 bit (na eto ukaziwaet "Byte ptr") po adresu segmenta Es i offsetu Bx+15h. Wtoroi: chislo. Rezultat pishetsya w argument ukazannij slewa.

mov es:[bx+1Ah],dx

Kopiruet soderjimoe registra Dx po adresu ukazannomu w perwom argumente. Rashifrowku adresa smotri wishe.

mov word ptr es:[bx+1Ch],0

Zapisat 0 po adresu perwogo argumenta "Word ptr" znachit chto argument budet wosprinyat kak "slowo" - zapis dlinoi 16 bit. Ostalnoe rashifruesh sam.

CYD 20.10.2002 13:14

Я тормаз в кубе :)
Хэлл, извини, что заставил тебя писать все это..я это знаю, вопрос был в том почему оффсет такой странный bx+15h например?

helldomain 20.10.2002 13:52

Pochemu strannij?

Es:[Bx+15h] znachit, chto iskomaya yacheika pamyati nahoditsya po adresu: segment Es, ofset - soderjimoe registra Bx plius 15 w schesnadcaterichnoi. Esli ti imeesh w widu, gde eto mojet ispolzowatsya, to kak minimum pri obrabotke strok. Dopustim tebe nado prewratit kajduju strochnuju bukwu stroki w propisnuju.

Segment s dannimi:
DSeg Segment
DummyData dw 1 dup (?) ;Prosto zabiwaem perwie dwa baita segmenta kakoi-to hrenju
MyStr db 'wot tebe stroka' ;Dalshe pishem stroku. Ee adres budet propisan kak metka "MyStr"
DSeg EndS

Segment koda:
CSeg Segment

; Eto procedura
Main Proc
;Zdes idet inicializaciya segmentow i prochaya hren
Mov Cx, 15 ; Eto dlina stroki w baitah
@MainByteScanLoop: ; Eto metka na kotoruju polzet loop
;Berem odin bait iz stroki i kidaem ego w registr Dl.
;Snachala nado skopirowat Cx (peremennaya cikla, indeks w registr kotorij mojno ispolzowat dlya adresacii. Eto mogut bit Bx, Si, Di)
Mov Bx, Cx
;Teper chitaem baitik po izwestnomu adresu ;-))) i kidaem ego w Dl
Mov Dl, Ds:[Bx+2]
;Zdes ti pishesh swoju obrabotku znaka stroki. Rezultat kladesh w Dl.
____________TWOI_KOD___________
;Kidaem ego obratno tuda, otkuda wzyali
Mov Ds:[Bx+2], Dl

;Operand zawersheniya cikla. Emu dajetsya metka prijka
Loop @MainByteScanLoop
Main EndP

CSeg EndS

CYD 20.10.2002 21:21

Оки, спасибо...все понял :)

helldomain 21.10.2002 03:33

Nezachto.


Часовой пояс GMT +4, время: 06:48.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.