/Open Fold Strings = "if" "while"
/Close Fold Strings = "endif" "endw"vAg-w;l ? A8W
20090416
20090310
20090309
MASM inc指令后面直接放变量
inc 自加,后面不仅仅直接可以直接放寄存器,也可以直接放在数据段定义好的变量,如
data segment
b1nggou
data ends
.
.
.
inc b1nggou
--------------------------------------
best regards,
Devin_Chen
20090308
MASM汇编语言如何多行注释
【格式】
COMMENT delimiter [[text]]
[[text]]
[[text]] delimiter [[text]]
[[text]]
[[text]] delimiter [[text]]
【注意】
比如注释如下,则会在第一个"a"("szMessage1"中的"a")地方停止多行注释。
COMMENT a
szMessage1 db "Hello World 1",0
szMessage2 db "Hello World 2",0
szCaption db "I ran out of imagination...",0
a
szMessage1 db "Hello World 1",0
szMessage2 db "Hello World 2",0
szCaption db "I ran out of imagination...",0
a
所以一般都在delimiter后面加上特殊符号(!,~ 等),比如:
comment start!
szMessage1 db "Hello World 1",0
szMessage2 db "Hello World 2",0
szCaption db "I ran out of imagination...",0
szMessage2 db "Hello World 2",0
szCaption db "I ran out of imagination...",0
end comment start!
但是如果程序里面(通常是注释)可能也有“!”,所以这个时候就会出错。
但是如果程序里面(通常是注释)可能也有“!”,所以这个时候就会出错。
Reference:
20090219
汇编中各种进制及其字符表示
汇编中各种进制及其字符表示
----------------------------------------
进制 字符 例子
----------------------------------------
二进制 B/Y(*) 1010B、1011B
八进制 Q/O 1234Q、311Q
十进制 D/T 1234D、512D
十六进制 H 1234H、1011H
----------------------------------------
备注
(*):字符Y、O和T是宏汇编MASM系统所增加的进制表示符。
20090206
在https://opensvn.csie.org/上面建立lsACPI项目
在https://opensvn.csie.org/上面建立lsACPI项目
C和汇编混合编写一个小工具,能够ls ACPI的Tables。
20090202
20090123
Error: Unable to execute command 'tasm.exe'
用TC3混合编译C和ASM,刚搭建的环境,首次编译报错:
tc和masm的bin目录的环境变量都设好了啊
tc下面也有tasm.exe,而且cmd下可以直接运行tasm。
后来把tasm.exe删除掉,发现错误没有变化,才想到会不会是tc到masm目录下找的tasm.exe啊(而不是自己目录下),于是把tc下的tasm.exe移动到了masm下,一编译,果然成功了。
在网上查了好久,发现大家问题都出在tc下面没有tasm.exe上,没想到我这里的问题这么特殊。
D:\MASM\WORKS>tcc.exe -ID:\TURBOC3\INCLUDE -LD:\TURBOC3\LIB -B ACPI.C ACPIi.ASM
Turbo C++ Version 3.00 Copyright (c) 1992 Borland International
acpi.c:
Error: Unable to execute command 'tasm.exe'
tc和masm的bin目录的环境变量都设好了啊
tc下面也有tasm.exe,而且cmd下可以直接运行tasm。
后来把tasm.exe删除掉,发现错误没有变化,才想到会不会是tc到masm目录下找的tasm.exe啊(而不是自己目录下),于是把tc下的tasm.exe移动到了masm下,一编译,果然成功了。
在网上查了好久,发现大家问题都出在tc下面没有tasm.exe上,没想到我这里的问题这么特殊。
20081217
汇编语言MASM伪指令 - %out (百分号加out)
当看别人写的汇编语言中出现这样的指令时:
真有点想杀人的感觉。
不过今天得一高人指点,终于明白了它的用处。
这个是MASM众多恶心伪指令中比较特别的一种指令,格式:
[%OUT]
格式:%OUT text
作用:在汇编期间,遇到%OUT时,在屏幕上显示出text项。
类似的还有%ECHO。参考这里
http://hi.baidu.com/58472/blog/item/bc7626cee033a50693457e3a.html
最后衷心感谢我的好战友,伟大的马克思主义者,伟大的无产阶级革命家、政治家、军事家、外交家。。。Nyx同志,祝他早日出双入对:-)
%out ACPI Tables in ...
真有点想杀人的感觉。
不过今天得一高人指点,终于明白了它的用处。
这个是MASM众多恶心伪指令中比较特别的一种指令,格式:
[%OUT]
格式:%OUT text
作用:在汇编期间,遇到%OUT时,在屏幕上显示出text项。
类似的还有%ECHO。参考这里
http://hi.baidu.com/58472/blog/item/bc7626cee033a50693457e3a.html
最后衷心感谢我的好战友,伟大的马克思主义者,伟大的无产阶级革命家、政治家、军事家、外交家。。。Nyx同志,祝他早日出双入对:-)
20081209
out时候端口号需不需要保存在dx中
一个例子
mov ax, 0aah
mov dx, 80h
out dx, ax
第二个例子:
mov ax, 0aah
out 80h, ax
编译都能够通过,可是到底在什么情况下才需要使用dx来存储端口号呢?
仔细看过汇编语言课本的都会发现,在使用out的时候,如果大于0ffh的端口号都需要使用dx来存储端口号,然后out dx。
如果小于等于ffh的话,则可以像第二个例子中那样直接out 80h了。
第三个例子:
mov ax, 0aah
mov dx, 0cf8h
out dx, ax
在这个例子中需要操作PCI,端口号大于0ffh,所以得先放到dx中再out。
mov ax, 0aah
mov dx, 80h
out dx, ax
第二个例子:
mov ax, 0aah
out 80h, ax
编译都能够通过,可是到底在什么情况下才需要使用dx来存储端口号呢?
仔细看过汇编语言课本的都会发现,在使用out的时候,如果大于0ffh的端口号都需要使用dx来存储端口号,然后out dx。
如果小于等于ffh的话,则可以像第二个例子中那样直接out 80h了。
第三个例子:
mov ax, 0aah
mov dx, 0cf8h
out dx, ax
在这个例子中需要操作PCI,端口号大于0ffh,所以得先放到dx中再out。
20081022
在DOS下用汇编指令重启
这个基本上算是没用的东西(ctrl+alt+del就可以重启了),完全是为了好玩才使用的,可以做成一个reboot.exe文件。
mov dx, 0cf9
mov al, 02h
out dx, al
mov al, 0eh
out dx, al
订阅:
博文 (Atom)