鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 3

小甲鱼汇编:将所有单词的字母变为大写

[复制链接]
发表于 2012-10-21 16:47:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:codesg,ds:datasg,ss:stacksg
datasg 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,[bx+si]
        and al,11011111b
        mov [bx+si],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):
第一次发表,没写注释,请各位朋友谅解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-21 20:15:08 | 显示全部楼层
十六进制 , 小写 字母只要 - Ox20就是 大写字母了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-20 19:22:21 | 显示全部楼层
你的程序编译成exe应该可以运行,具体我没编译过。但用debug单步调试时应该会报错。原因是debug在执行中断时需要用到你定义的堆栈,至少需要3word。当堆栈空间不足时,就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-20 20:36:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 08:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表