. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第十章实验10.3把数值转换成字符串,并存放到data数据段中。虽然程序写出来,求高人帮助  [待解决] 回复[ 2次 ]   点击[ 342次 ]  
vs9841
[帖 主]   [ 发表时间:2011-07-05 22:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
实验10.3把数值转换成字符串,并存放到data数据段中子程序。虽然程序写出来,调试通过了,可是总觉得算法不对,循环好像用的太多了,还有这个栈的处理,使代码看着不舒服。
====================================
;**************************************************************************************
;Name:     dtoc
;Function: 将word类型的数据转换成以0结尾的字符串
;参数:     ax=word型数据
;          ds:si返回转换后字符串的首地址
;*************************************************************************************
dtoc:        mov bx,0
        push dx         
        push bx        ;|此行处是子程序写完,发现出栈有问题,才加上的,这里如果不仔细推理
               mov di,0       ;|全部程序,估计永无法明白,我写完了,也觉得太可怕了。不喜欢这样,
        mov dx,0       ;|可是实在又愚笨,不知如何更好。
s:        mov bx,10
        div bx
        mov cx,ax        ;ax=商 dx=余数
        add dx,30h
        push dx
        inc si
        jcxz ok
        mov dx,0
        jmp short s
        
        
ok:     mov si,0
ok2:        pop cx
        mov ds:[si],cl
        jcxz kkk
        inc si
        jmp short ok2
kkk:    pop dx
        mov si,0
        ret
qqcrack
[第1楼]   [ 回复时间:2011-07-06 01:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-04 18:37
div bx=ax/bx 请问你的ax初始化了吗?
vs9841
[第2楼]   [ 回复时间:2011-07-06 09:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
ax在主程序是用来传递word型数据参数到子程序中。不需要初始化。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved