下面这个程序,不定义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也可以运行。