当前位置: 代码迷 >> 汇编语言 >> 汇编中使用dw 的有关问题,求大侠指点
  详细解决方案

汇编中使用dw 的有关问题,求大侠指点

热度:3867   发布时间:2013-02-26 00:00:00.0
汇编中使用dw 的问题,求大侠指点
下面这个程序,不定义SECOND_NUM可以输出FIRST_NUM中的值
但是定义了SECOND_NUM就只能输出0000
是不是我的dw定义得有问题,小弟初学汇编,请各位大侠指点。

datarea   segment  
FIRST_NUM   dw   0f32fh,5777h   ;  
;   SECOND_NUM   dw   0005h,0E024H   ;不注释这一句,打印出来就是0000  
datarea   ends  

code   segment  

main   proc   far  
assume   cs:   code   ,   ds:   datarea  
start   :  
mov   ax,datarea  
mov   ds,ax  

mov   SI   ,   0  
mov   bx,FIRST_NUM[SI]  
call   binihex  

mov   ah,4ch  
int   21h  
main   endp  

binihex   proc   near   ;用十六进制打印bx中的数字  
mov   ch,4  
rotate:  
mov   cl,4  
rol   bx,cl  
mov   al,bl  
and   al,0fh  
add   al,30h  
cmp   al,3ah  
jl   print_it  
add   al,7h  
print_it:  
mov   dl,al  
mov   ah,2  
int   21h  
dec   ch  
jnz   rotate  
ret  
binihex   endp  


code   ends  
end  




------解决方案--------------------------------------------------------

end
写成
end start
即可
------解决方案--------------------------------------------------------
end后的start指示程序开始执行的起始位置。如果多个程序模块相连接,则只有主程序需要编号
其它子程序模块不用标号
汇编程序遇到end start结束汇编,而程序将从start开始执行(这个标号不是一定要用start)
------解决方案--------------------------------------------------------
去掉下面两句
main proc far
main endp
end后不用加start也可以运行。
  相关解决方案