鱼C论坛

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

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

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

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

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

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

  2. data segment
  3.                 db 10 dup (0)
  4. data ends

  5. code segment
  6. start:        mov ax, 12666
  7.                 mov bx, data
  8.                 mov ds, bx
  9.                 mov si, 0
  10.                 call dtoc
  11.                
  12.                 mov dh, 8
  13.                 mov dl, 3
  14.                 mov cl, 2
  15.                 call show_str
  16.                
  17.                 mov ax, 4C00h
  18.                 int 21h
  19.                
  20. dtoc:        mov cx, ax
  21.                
  22.                 mov dx, 0
  23.                
  24.                 jcxz ok
  25.                
  26.                 mov bx, 10
  27.                 div bx
  28.                
  29.                 mov byte ptr ds:[si], dl
  30.                
  31.                 inc si
  32.                
  33.                 jmp short dtoc
  34.                
  35. ok:                ret

  36. show_str:mov ax, 0b800h
  37.                 mov es, ax
  38.                
  39.                 mov al, 0A0H
  40.                 mov ah, 0
  41.                 dec dh
  42.                 mul dh
  43.                
  44.                 mov bx, ax
  45.                
  46.                 mov al, 2
  47.                 mov ah, 0
  48.                 mul dl
  49.                 sub ax, 2
  50.                
  51.                 add bx, ax
  52.                 mov al, cl
  53.                 mov ch, 0
  54.                 mov ah, 0
  55.                 mov di, 0
  56.                 mov si, 0
  57.                
  58. kiss:        mov cl, ds:[si]
  59.                
  60.                 jcxz s
  61.                
  62.                 mov es:[bx + di], cl
  63.                 mov es:[bx + di + 1], al
  64.                
  65.                 inc si
  66.                 add di, 2
  67.                
  68.                 jmp short kiss

  69. s:                ret
  70.                
  71.                
  72. code ends
  73. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

  2. data segment
  3.         db 10 dup (0)
  4. data ends

  5. code segment
  6. start:
  7.         mov        ax, 12666
  8.         mov        bx, data
  9.         mov        ds, bx
  10.         mov        si, 0
  11.         call        dtoc

  12.         mov        dh, 8
  13.         mov        dl, 3
  14.         mov        cl, 2
  15.         call        show_str

  16.         mov        ax, 4C00h
  17.         int        21h

  18. dtoc:
  19.         mov        cx, ax
  20.         mov        dx, 0
  21.         jcxz        ok

  22.         mov        bx, 10
  23.         div        bx
  24.         add        dl, '0'
  25.         mov        byte ptr ds:[si], dl
  26.         inc        si
  27.         jmp        short dtoc
  28. ok:
  29.         ; 通过上面的循环得到的字符串顺序是倒序,下面翻转字符串
  30.         mov        di, si
  31.         dec        di
  32.         xor        si, si
  33. next:
  34.         cmp        si, di
  35.         jge        done
  36.         mov        ah, [si]
  37.         mov        al, [di]
  38.         mov        [si], al
  39.         mov        [di], ah
  40.         inc        si
  41.         dec        di
  42.         jmp        next
  43. done:
  44.         ret

  45. show_str:
  46.         mov        ax, 0b800h
  47.         mov        es, ax

  48.         mov        al, 0A0H
  49.         mov        ah, 0
  50.         dec        dh
  51.         mul        dh

  52.         mov        bx, ax

  53.         mov        al, 2
  54.         mov        ah, 0
  55.         mul        dl
  56.         sub        ax, 2

  57.         add        bx, ax
  58.         mov        al, cl
  59.         mov        ch, 0
  60.         mov        ah, 0
  61.         mov        di, 0
  62.         mov        si, 0

  63. kiss:
  64.         mov        cl, ds:[si]

  65.         jcxz        s

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

  68.         inc        si
  69.         add        di, 2

  70.         jmp        short kiss

  71. s:
  72.         ret

  73. code ends
  74. 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输出因为这个程序对我来说比较复杂,所以我先想一步一步来,我 ...
  1. assume cs:code, ds:data

  2. data segment
  3.         db 10 dup (0)
  4. data ends

  5. code segment
  6. start:
  7.         mov        ax, 12666
  8.         mov        bx, data
  9.         mov        ds, bx
  10.         mov        si, 0
  11.         call        dtoc

  12.         mov        dh, 8
  13.         mov        dl, 3
  14.         mov        cl, 2
  15.         call        show_str

  16.         mov        ax, 4C00h
  17.         int        21h

  18. dtoc:
  19.         mov        cx, ax
  20.         mov        dx, 0
  21.         jcxz        ok

  22.         mov        bx, 10
  23.         div        bx
  24.         add        dl, '0'
  25.         mov        byte ptr ds:[si], dl
  26.         inc        si
  27.         jmp        short dtoc
  28. ok:
  29.         ret

  30. show_str:
  31.         mov        ax, 0b800h
  32.         mov        es, ax

  33.         mov        al, 0A0H
  34.         mov        ah, 0
  35.         dec        dh
  36.         mul        dh

  37.         mov        bx, ax

  38.         mov        al, 2
  39.         mov        ah, 0
  40.         mul        dl
  41.         sub        ax, 2

  42.         add        bx, ax
  43.         mov        al, cl
  44.         mov        ch, 0
  45.         mov        ah, 0
  46.         mov        di, 0
  47.         mov        si, 0

  48. kiss:
  49.         mov        cl, ds:[si]

  50.         jcxz        s

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

  53.         inc        si
  54.         add        di, 2

  55.         jmp        short kiss

  56. s:
  57.         ret

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

使用道具 举报

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


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 09:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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