鱼C论坛

 找回密码
 立即注册
查看: 2734|回复: 4

实验10第三个例题我这个程序那里有写错呢

[复制链接]
发表于 2018-10-19 11:49:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请大神给解答一下这么写那里错了,为什么编译都是成功的就是的不到我要的执行结果
assume cs:code, ds:data

data segment
                db 10 dup (0)
data ends

code segment
start:        mov ax, 12666
                mov bx, data
                mov ds, bx
                mov si, 0
                call dtoc
                
                mov dh, 8
                mov dl, 3
                mov cl, 2
                call show_str
                
                mov ax, 4C00h
                int 21h
                
dtoc:        mov cx, ax
                
                mov dx, 0
                
                jcxz ok
                
                mov bx, 10
                div bx
                
                mov byte ptr ds:[si], dl
                
                inc si
                
                jmp short dtoc
                
ok:                ret

show_str:mov ax, 0b800h
                mov es, ax
                
                mov al, 0A0H
                mov ah, 0
                dec dh
                mul dh
                
                mov bx, ax
                
                mov al, 2
                mov ah, 0
                mul dl
                sub ax, 2
                
                add bx, ax
                mov al, cl
                mov ch, 0
                mov ah, 0
                mov di, 0
                mov si, 0
                
kiss:        mov cl, ds:[si]
                
                jcxz s
                
                mov es:[bx + di], cl
                mov es:[bx + di + 1], al
                
                inc si
                add di, 2
                
                jmp short kiss

s:                ret
                
                
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-19 12:46:15 | 显示全部楼层
assume cs:code, ds:data

data segment
        db 10 dup (0)
data ends

code segment
start:
        mov        ax, 12666
        mov        bx, data
        mov        ds, bx
        mov        si, 0
        call        dtoc

        mov        dh, 8
        mov        dl, 3
        mov        cl, 2
        call        show_str

        mov        ax, 4C00h
        int        21h

dtoc:
        mov        cx, ax
        mov        dx, 0
        jcxz        ok

        mov        bx, 10
        div        bx
        add        dl, '0'
        mov        byte ptr ds:[si], dl
        inc        si
        jmp        short dtoc
ok:
        ; 通过上面的循环得到的字符串顺序是倒序,下面翻转字符串
        mov        di, si
        dec        di
        xor        si, si
next:
        cmp        si, di
        jge        done
        mov        ah, [si]
        mov        al, [di]
        mov        [si], al
        mov        [di], ah
        inc        si
        dec        di
        jmp        next
done:
        ret

show_str:
        mov        ax, 0b800h
        mov        es, ax

        mov        al, 0A0H
        mov        ah, 0
        dec        dh
        mul        dh

        mov        bx, ax

        mov        al, 2
        mov        ah, 0
        mul        dl
        sub        ax, 2

        add        bx, ax
        mov        al, cl
        mov        ch, 0
        mov        ah, 0
        mov        di, 0
        mov        si, 0

kiss:
        mov        cl, ds:[si]

        jcxz        s

        mov        es:[bx + di], cl
        mov        es:[bx + di + 1], al

        inc        si
        add        di, 2

        jmp        short kiss

s:
        ret

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-19 15:53:41 | 显示全部楼层
本帖最后由 奥普瓯江 于 2018-10-19 15:56 编辑


难道不翻转就无法输出么?我想先以66621输出因为这个程序对我来说比较复杂,所以我先想一步一步来,我先输出这个数值,完了再进行翻转,但是我现在这个数值输出不了,麻烦大神给解释一下,麻烦了,
这里我想着是用站对他进行翻转
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-19 16:46:53 | 显示全部楼层
奥普瓯江 发表于 2018-10-19 15:53
难道不翻转就无法输出么?我想先以66621输出因为这个程序对我来说比较复杂,所以我先想一步一步来,我 ...
assume cs:code, ds:data

data segment
        db 10 dup (0)
data ends

code segment
start:
        mov        ax, 12666
        mov        bx, data
        mov        ds, bx
        mov        si, 0
        call        dtoc

        mov        dh, 8
        mov        dl, 3
        mov        cl, 2
        call        show_str

        mov        ax, 4C00h
        int        21h

dtoc:
        mov        cx, ax
        mov        dx, 0
        jcxz        ok

        mov        bx, 10
        div        bx
        add        dl, '0'
        mov        byte ptr ds:[si], dl
        inc        si
        jmp        short dtoc
ok:
        ret

show_str:
        mov        ax, 0b800h
        mov        es, ax

        mov        al, 0A0H
        mov        ah, 0
        dec        dh
        mul        dh

        mov        bx, ax

        mov        al, 2
        mov        ah, 0
        mul        dl
        sub        ax, 2

        add        bx, ax
        mov        al, cl
        mov        ch, 0
        mov        ah, 0
        mov        di, 0
        mov        si, 0

kiss:
        mov        cl, ds:[si]

        jcxz        s

        mov        es:[bx + di], cl
        mov        es:[bx + di + 1], al

        inc        si
        add        di, 2

        jmp        short kiss

s:
        ret

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-19 17:02:54 | 显示全部楼层


我知道我错哪里了,他是按照ASCII输出的这几个数在ASCII里面就是这几个标志,我得加每个字节加30H才行,谢谢了啊
这个脑袋蒙圈了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-5 21:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表