| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:这个有错的程序应该怎么改?
只看楼主 加入收藏
yingyingnana
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-12
收藏
 问题点数:0 回复次数:2 
这个有错的程序应该怎么改?
这个程序在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
没事情跳楼耍
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-16
收藏
得分:0 
回复:(yingyingnana)这个有错的程序应该怎么改?

给你个我写的吧,我也是菜鸟一只,不知道怎么改!

data segment
count=3
array dw 0,102,-34
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,count
mov si,offset array
dis:
mov ax,[si]
cmp ax,0
jnz dis1
mov dl,30h
mov ah,2
int 21h
jmp dis5
dis1:
cmp ax,0
jg dis2
mov bx,ax
mov dl,'-'
mov ah,2
int 21h
mov ax,bx
neg ax
dis2:
mov bx,10
push bx
dis3:
cmp ax,0
jz dis4
sub dx,dx
div bx
add dl,30h
push dx
jmp dis3
dis4:
pop dx
cmp dl,10
je dis5
mov ah,2
int 21h
jmp dis4
dis5:
mov dl,','
mov ah,2
int 21h
add si,2
dec cx
jnz dis
exit:
mov ah,4ch
int 21h
code ends
end start

2007-06-16 15:47
h66912896
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-19
收藏
得分:0 
是不是write proc 缺少个属性,如write proc far
dpcrlf proc dpcrlf proc far

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



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

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