小甲鱼汇编:将所有单词的字母变为大写
assume cs:codesg,ds:datasg,ss:stacksgdatasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
datasg ends
stacksg segment
dw 0
stacksg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,2
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s: push cx
mov si,0
mov cx,3
s1: mov al,
and al,11011111b
mov ,al
inc si
loop s1
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
请问各位,为什么上面程序中要sp=16才能正常运行呢,在我的机子上小于16都不能正常运行,对cs进行入栈不是只需要两个字节么。。。。谢谢各位
补充内容 (2012-10-21 18:08):
第一次发表,没写注释,请各位朋友谅解 十六进制 , 小写 字母只要 - Ox20就是 大写字母了 你的程序编译成exe应该可以运行,具体我没编译过。但用debug单步调试时应该会报错。原因是debug在执行中断时需要用到你定义的堆栈,至少需要3word。当堆栈空间不足时,就会报错。 57042478 发表于 2012-11-20 19:22 static/image/common/back.gif
你的程序编译成exe应该可以运行,具体我没编译过。但用debug单步调试时应该会报错。原因是debug在执行中断时 ...
谢谢{:5_108:}
页:
[1]