菜鸟成功修改的第一个程序

曾经有一个程序,横在我的面前,我没有办法搞定它,它就是:来自 http://www.aogosoft.com/“汇编通讯”第一期里的一个程序。无论怎么弄,总是说“应用程序错误”,用WIN32DASM也查不出问题所在。

;在消息框里显示AL中的数值

        .386
        .model flat,stdcall
        option  casemap:none

include  windows.inc
include  kernel32.inc
includelib  kernel32.lib
include   user32.inc
includelib   user32.lib

        .data
MsgBoxCaption  db "结果!",0
MsgBoxText     db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .code
start:
mov   al,97h
call  ShowAL


invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
invoke ExitProcess, NULL

ShowAL proc
        mov  dl,al      ;保存AL
        mov  cl,04      
         shr  al,cl      ;AL高4位移至低4位
         mov  cx,02h      ;循环2次
         xor  ebx,ebx
         mov  esi,offset MsgBoxText

Low4bit:
cmp  al,09
         jbe  larger    ;低4位超过9
         add  al,07
larger:     
add  al,30h

        mov  [esi],al
         inc   esi      
         
        mov  al,dl      ;恢复保存
          and  al,0Fh
          loop  Low4bit
        
         ret
ShowAL   endp

end start

就是它,把我搞得焦头烂额的,现在终于被我给运行了起来,当然,改得菜菜的,呵呵~~:

          .386
         .model flat,stdcall
         option casemap:none
include   windows.inc
include   kernel32.inc
includelib   kernel32.lib
include   user32.inc
includelib  user32.lib

            .data
MsgBoxCaption  db "结果!",0
MsgBoxText     db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
             .code
start:
mov   al,97h
call  ShowAL


invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
invoke ExitProcess, NULL

ShowAL proc
        mov  dl,al      ;保存AL
        mov  cl,04      
         shr  al,cl      ;AL高4位移至低4位
         xor  ebx,ebx
         mov  esi,offset MsgBoxText

 .while  ebx < 2
  add al,30h
  mov [esi+ebx],al
  inc  ebx
  mov al,dl
  and al,0fh
 
        .endw
         ret
ShowAL   endp

end start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值