回 帖 发 新 帖 刷新版面

主题:从1加到100,编译制作成EXE可执行文件,在DOS下输入文件名运行,没看到输出结果,模拟器模拟运行

data segment
    var dw ?
    vxr dw ?
data ends
code segment
main proc far            ;主程序    
assume ds:data,cs:code
start:
    mov ax,data
    mov ds,ax
    mov ax,0         ;初始化ax
    mov cx,64h         ;初始化cx
    clc
loop_strat:             ;循环标号
    adc ax,cx         ;累加
    loop loop_strat         ;循环loop_strat
    mov var,ax         
    mov vxr,ax
    call converter        
    ret
main endp

converter proc near    ;子程序converter将数值转化为十六进制输出
    mov cl,4        ;设定移位次数为4
    mov ch,4        ;设定循环次数
loopone:            ;循环标号
    rol vxr,cl        ;移位转换为十六进制
    mov dx,vxr
    and dl,0fh
    call print        ;调用输出子程序
    dec ch
    cmp ch,0
    jnz loopone        ;循环
    ret
converter endp

print proc near
    add dl,30h
    cmp dl,3ah        ;是否>9
    jl display        ;<9直接输出
    add dl,07h        ;>9转为A--F字符
display:
    mov ah,02h        ;显示输出
    int 21h            ;INT21中断02号功能为显示输出
    ret
print endp
code ends
end start

;***********************************************************
;程序从1加到100,答案为5050,十六进制为13BAH。
;经编译制作成EXE可执行文件,在DOS下输入文件名运行,没看到输出结果
;用模拟器模拟运行却能看到输出13BAH这一运行结果。

回复列表 (共2个回复)

沙发

经过努力,这个问题还是自己解决了。原来是操作系统的问题,我把编译成的EXE可执行文件在XP集成的DOS下输入文件名运行,它不能显示结果。把它弄到DOS6.22操作系统环境下去运行,就可以看见13BA这十六进制的结果了。
看来DOS下的编程,还是需要在DOS下的环境去运行。刚开始学汇编的人,特别是DOS汇编语言,最好做一下虚拟的DOS6.22操作系统,这样可以避免我上面出现的情况。

板凳

淘宝商盟盛大开幕,
简介:淘宝商盟是基于淘宝网而建立的。经过淘宝6年的网络购物市场的蓬勃发展 ,淘宝的商家已经开始形成巨大的商盟组织,其发展速度和规模已经是全球第一 大商业联盟。
商业模式:基于淘宝网30万商家联盟结合含权消费,消费返佣的模式    
产品:上亿款产品直接来自于淘宝网和阿里巴巴卖家,价格比淘宝网还要便宜。

欢迎各界有志人士的参与,错过了淘宝,我们还能再错过淘宝商盟吗?
专职网商元亨,咨询QQ908889846
http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度
淘宝商盟购物商城
http://www.tbsmsc.com/?id=88888

我来回复

您尚未登录,请登录后再回复。点此登录或注册