首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

请大家帮忙看看这个程序,该怎么处理

2012-03-05 
请大家帮忙看看这个程序显示有符号十进制数,程序运行结果不正确,请各位帮忙看一看!本人估计是用除法指令是

请大家帮忙看看这个程序
显示有符号十进制数,
程序运行结果不正确,请各位帮忙看一看!
本人估计是用除法指令是有点错误,初学汇编还不是很懂!
datasegment
count=3
arraydw0,12,-34
dataends

codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
movcx,count
movsi,offset   array
dis:
movax,[si]
cmpax,0
jnzdis1
movdl,30h;为0直接输出
movah,2
int21h
jmpdis5
dis1:
cmpax,0
jgdis2;为负数先输出付号
movbx,ax
movdl, '- '
movah,2
int21h
movax,bx
negax;对负数求补
dis2:
movbx,10
pushbx;10压入堆栈,作为退出标志
dis3:
cmpax,0
jzdis4
subdx,dx
divbx;数据除以10,ax存商,dx存余数
adddl,30h
pushdx;数据各位先低位后高位压入堆栈
jmpdis3
dis4:
popdx;数据各位先高位后低位弹出堆栈
cmpdl,10;是结束标志10,则退出
jedis5
movah,2
int21h
jmpdis4
dis5:
movdl, ', ';每个数用逗号隔开
movah,2
int21h
incsi
deccx
jnzdis
exit:
movah,4ch
int21h
codeends
endstart

[解决办法]
....
addsi, 2 ;* inc si ;* 因为数据是以 dw 定义并使用的, 所以应增 2
deccx
jnzdis
exit:
....
[解决办法]
楼上正解,也可以改成
add si,TYPE array
这样灵活性更大些

热点排行