读书人

请问关于NASM的$使用

发布时间: 2012-02-08 19:52:21 作者: rapoo

请教关于NASM的$使用
@dd0FFFFFFFFh; Link to next device-header block
dw8000h; Driver "device attributes "
dwStrat; "Strategy " routine offset
VLFequ$-2; (VDS "lock " flag after initialization)
IDEAdrequ$-1; (Lower IDE status address, after init)
dwDevInt; "Device-Interrupt " routine offset
PCIAdrequ$-2; (PCI UDMA command address, after init)
db16,16, 'UDMA$ ',0 ; Driver name (arrows avoid user errors)

......

mov[bx+IDEAdr-@],bp; Set IDE & PCI device-address bytes

......

Stratmov[cs:Packet],bx; Save DOS request-packet address

......


------------------------------
以上是一个驱动程序的部分代码。
IDEAdr、VLF是不是分别代表(@+4+2+2-1)、(@+4+2+2-2)?
执行 mov[bx+IDEAdr-@],bp; 前bx已经清零,这条语句是不是把bp的值存到(@+4+2+2-1)这个地址?


[解决办法]
> IDEAdr、VLF是不是分别代表(@+4+2+2-1)、(@+4+2+2-2)?

IDEAdr、VLF分别代表(@+4+2+2-1-1)、(@+4+2+2-2-1)。

> 执行 mov[bx+IDEAdr-@],bp; 前bx已经清零,这条语句是不是把bp的值存到(@+4+2+2-1)这个地址?

bx+IDEAdr-@=> 0+(@+4+2+2-1-1)-@=> 6
把bp的内容存储到DS:[bx+IDEAdr-@]处,即[DS:0006 ]处。

读书人网 >汇编语言

热点推荐