| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:这个有错的程序应该怎么改?
取消只看楼主 加入收藏
yingyingnana
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-12
收藏
 问题点数:0 回复次数:0 
这个有错的程序应该怎么改?
这个程序在MASM611软件编译有错,但是我不懂得怎么改,
哪位高手能帮我改一下,是关于向显示器输出有符号十进制数的子程序
有两个错误,

.model small
.stack
.data
.code
.startup
array dw 1234,-1234,0,1,-1,32767,-32768,5678,-5678,9000
count = ($-array)/2
wtemp dw ?
;代码段
mov cx,count
mov bx,offset array
again: mov ax,[bx]
mov wtemp,ax ;将入口参数存放到共享变量
call write ;调用子程序,显示一个数据
inc bx
inc bx
call dpcrlf ;光标回车换行以便显示下一个数据
loop again
.exit 0

write proc ;显示有符号10进制数的通用子程序:
push ax ;入口参数:共享变量wtemp
push bx
push dx
mov ax,wtemp ;取出显示数据
test ax,ax ;判断数据是零、正数或负数
jnz write1
mov dl,'0' ;是零,显示“0”后退出
mov ah,2
int 21h
jmp write5
write1: jns write2 ;是负数,显示“-”
mov bx,ax ;AX数据暂存于BX
mov dl,'-'
mov ah,2
int 21h
mov ax,bx
neg ax ;数据求补(绝对值)
write2: mov bx,10
push bx ;10压入堆栈,作为退出标志
write3: cmp ax,0 ;数据(余数)为零,转向显示
jz write4
sub dx,dx ;扩展被除数DX.AX
div bx ;数据除以10:DX.AX÷10
add dl,30h ;余数(0~9)转换为ASCII码
push dx ;数据各位先低位后高位压入堆栈
jmp write3
write4: pop dx ;数据各位先高位后低位弹出堆栈
cmp dl,10 ;是结束标志10,则退出
je write5
mov ah,2 ;进行显示
int 21h
jmp write4
write5: pop dx
pop bx
pop ax
ret ;子程序返回
write endp
;使光标回车的子程序
dpcrlf proc
push ax
push dx
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
pop dx
pop ax
ret
dpcrlf endp
end

小弟感激不尽~

[此贴子已经被作者于2007-6-16 19:08:21编辑过]

2007-06-16 14:46
快速回复:这个有错的程序应该怎么改?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved