鱼C论坛

 找回密码
 立即注册
查看: 1696|回复: 1

做课程设计一之前实验一下显示,可是出错【自己解决了】

[复制链接]
发表于 2014-4-14 23:36:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ck329054222 于 2014-4-15 17:18 编辑

我的问题是。下面的代码运行之后,只显示我设置的双字的后6位,第一位的1怎么也不显示。。。求大神找出问题所在。。
  1. assume cs:code
  2. data segment
  3. db 10 dup (0)
  4. data ends

  5. code segment
  6. start: mov ax,9f0ah
  7. mov dx,0fh
  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:push si ;转换为ASCII码并存入数据段
  19. push ax
  20. push cx
  21. push dx

  22. s1:
  23. mov cx,10
  24. call divdw
  25. jcxz kk

  26. add cx,30H
  27. inc si
  28. push cx

  29. jmp short s1 ;每次取余数转换为ASCII码

  30. kk:
  31. add cx,30h
  32. push cx
  33. inc si;最后一个1除以10就跳到这里了,si并没有增加,最后一位1也不在栈里故补偿
  34. mov cx,si ;设置循环次数
  35. mov si,0

  36. s2:
  37. pop dx
  38. mov ds:[si],dx
  39. inc si
  40. loop s2 ;将ASCII码存入内存

  41. pop dx
  42. pop cx
  43. pop ax
  44. pop si
  45. ret

  46. show_str:push dx ;显示数据段内的字符
  47. push cx
  48. push bx
  49. push ax

  50. mov ax,0b800h
  51. mov es,ax

  52. mov al,0a0h
  53. mul dh
  54. mov bx,ax;ax中为第八行首字节的偏移地址

  55. mov al,2
  56. mul dl
  57. add bx,ax;显存第一个字母的偏移地址

  58. mov ah,cl
  59. mov ch,0
  60. s:
  61. mov cl,ds:[si]
  62. jcxz ok
  63. mov al,cl ;字符放入低八位
  64. mov es:[bx],ax
  65. inc si
  66. add bx,2

  67. jmp short s
  68. ok: pop ax
  69. pop bx
  70. pop cx
  71. pop dx
  72. ret

  73. divdw: ;双字除法
  74. push ax
  75. mov ax,dx;将高16位装入低16位
  76. mov dx,0;装换后,不会产生溢出
  77. div cx;高16位产生高位余数dx,商ax为需要返回的值余数dx
  78. mov bx,ax
  79. pop ax;还原低16位
  80. div cx;ax即为所需返回的商
  81. mov cx,dx;判断最后余是否为0。cx=0,jcxz跳转
  82. mov dx,bx
  83. ret
  84. code ends
  85. end start
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-15 17:12:27 | 显示全部楼层
本帖最后由 ck329054222 于 2014-4-15 17:17 编辑

还是自己解决了。。。关键是数字中间有个0。。
在29到30行之间加上
mov bx,cx  
mov cx,ax
把39到40行改成
add bx,30h
push bx
把32到34行改成
add bx,30H
inc si
push bx

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 11:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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