鱼C论坛

 找回密码
 立即注册
查看: 1739|回复: 2

大家来看看我实验十的第三小题这样写有问题没

[复制链接]
发表于 2013-1-3 22:53:33 | 显示全部楼层 |阅读模式

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

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

x
assume cs:code
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
                 
                 
                 
                show_str: push ax
                       push bx
                           push si
                           push es
                           mov bx,0b800h
                           moc es,bx
             dtoc: mov cx,ax
                   jcxz ok
                   div ax
                           add dx,30h
                           mov ds:[si],dl
                           inc si
                           jamp offste dtoc
                          
               ok:
                       mov si,0
                  
                       mov al,2
                           mov di,1123h
                           mov cx,ds:[si]
                           jcxz s
                           mov dl,ds:[si]
                           mov es:[di],dl
                           inc di
                           mov es:[di],al
                           inc si
                           inc di
                           jamp ok
                          s: pop ax
                 pop bx
                 pop si
                 pop es
                 ret
                 code ends
                 end start
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-4 11:20:11 | 显示全部楼层
会出现溢出。。还有就是JAMP&MOC这样的笔误要多留心。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-4 17:42:03 | 显示全部楼层
  1. assume cs:code
  2. data segment
  3. I DW 10 dup (0)
  4. SAX DW ?
  5. data ends

  6. code segment
  7. start: 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. ;==================================
  19. ;字符串显示
  20. ;==================================
  21. show_str:
  22. PUSH SI
  23. PUSH DI
  24. PUSH CX
  25. PUSH DX
  26. MOV AX,0B800H
  27. MOV ES,AX
  28. SUB DI,DI

  29. ADD DL,DL
  30. SUB AX,AX
  31. MOV AL,DL
  32. MOV DI,AX
  33. MOV AL,DH
  34. MOV AH,0
  35. MOV BX,160
  36. MUL BX
  37. ADD DI,AX


  38. LOOP_: MOV AL,DS:[SI]
  39. CMP AL,0
  40. JZ EXIT_
  41. INC SI
  42. MOV ES:[DI],AL
  43. INC DI
  44. MOV ES:[DI],CL
  45. INC DI
  46. JMP LOOP_
  47. EXIT_:

  48. POP DX
  49. POP CX
  50. POP DI
  51. POP SI
  52. RET
  53. ;==================================
  54. ;ASCII码转换DTOC
  55. ;==================================
  56. dtoc:
  57. PUSH SI
  58. PUSH DI
  59. PUSH BP
  60. PUSH CX
  61. MOV CX,0
  62. MOV BX,10


  63. TEST AX,DX
  64. JNZ EXIT
  65. MOV SAX,AX
  66. MOV AX,DX
  67. XOR DX,DX
  68. CMP AX,0
  69. JZ AX_PROC
  70. DX_PROC:DIV BX
  71. ADD DX,30H
  72. PUSH DX
  73. SUB DX,DX
  74. INC CX
  75. CMP AX,0
  76. JNZ DX_PROC
  77. AX_PROC:
  78. MOV AX,SAX
  79. TEST AX,DX
  80. JNZ POP_
  81. AX_: DIV BX
  82. ADD DX,30H
  83. PUSH DX
  84. XOR DX,DX
  85. INC CX
  86. CMP AX,0
  87. JNZ AX_
  88. POP_:
  89. POP DS:[SI]
  90. INC SI
  91. LOOP POP_
  92. EXIT: POP CX
  93. POP BP
  94. POP DI
  95. POP SI
  96. ret
  97. code ends
  98. end start
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-5 02:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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