教程
王爽的《汇编语言》第四版,如果没有写过汇编,最好从头开始读。我一开始就以为自己有高级语言的经历,选择性的看书,结果发现还是没有理解汇编语言的核心。
环境
我的电脑是Mac,用虚拟机安装了windows xp
系统,使用MASM 5.0
,下载的安装包里还有LINK
程序。IDE使用RadAsm,这个编辑器的高亮功能不错,不过不支持自动补全。
问题
栈的数据莫名其妙多了些无关的数据
assume cs:codesg,ss:stack
stack segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends
codesg segment
start:
mov ax, stack
mov ss, ax
mov sp, 20h
mov cx,10h
mov bx,0
s:
add bx, 1
push bx
loop s
mov ax, 4c00h
int 21h
codesg ends
end start
在Debug
下我发现运行最后会报错,发现栈中多了一些数据,而且是我一旦设置栈段后,就会出现这些数据。我把书中的例子也试了下,发现也有这个问题,不过书中栈设置的比较大,所以运行不会出问题,而我这个刚好设置的就是我需要的数据大小。后来在汇编语言论坛,找到相关问题,意思是Debug
下会在栈中存储一些数据的缘故,所以栈的大小不能刚适合,这会有问题的。