鱼C论坛

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

[已解决]如何实现任意数输出?求助

[复制链接]
发表于 2018-6-20 23:32:45 | 显示全部楼层 |阅读模式

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

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

x
例如:
....
a db 132
b db 9
c  db 100
....
用一个通用的汇编算法解决输出
最佳答案
2018-6-27 11:37:12
帝企鹅的日记 发表于 2018-6-27 08:56
就是在我将内存中的十进制数输出

assume ds:data,cs:code

data segment
        db 16 dup (0)
data ends

code segment
start:  mov ax,132      ;把要显示的内存数据132,丢进ax进行转换成10进制(这里的132编译后会变成16进制的84H在内存中)
          mov cx,0
          mov bx,10
   s1:   mov dx,0
          div bx
          push dx
          inc cx
          or ax,ax
          jne s1
   s2:   pop dx
          add dl,48   ;把10进制数转ASCII码显示
          mov ah,2
          int 21h
          loop s2
                              
         mov ax,4c00h
         int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 23:45:04 | 显示全部楼层
问题问的太模糊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-21 08:57:36 | 显示全部楼层
assume ds:data,cs:code
data segment
        a db '132',10,'$'         ;这里的10是换行符
        b db '9',10,'$'
        d db '100','$'
data ends
code segment
start:  mov ax,data
         mov ds,ax
         mov dx,offset a        ;用int21的9号中断历程显示字符串'132','$'为结束位置
         mov ah,9         
         int 21h
         mov dx,offset b        ;用int21的9号中断历程显示字符串'9','$'为结束位置
         mov ah,9
         int 21h
         mov dx,offset d        ;用int21的9号中断历程显示字符串'100','$'为结束位置
         mov ah,9
         int 21h
                              
         mov ax,4c00h
         int 21h
code ends
end start

;这里用int21写很方便,想自己往显卡地址写也可以只是比较复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-27 08:56:41 | 显示全部楼层
57158597@qq.com 发表于 2018-6-21 08:57
assume ds:data,cs:code
data segment
        a db '132',10,'$'         ;这里的10是换行符

就是在我将内存中的十进制数输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-27 11:37:12 | 显示全部楼层    本楼为最佳答案   
帝企鹅的日记 发表于 2018-6-27 08:56
就是在我将内存中的十进制数输出

assume ds:data,cs:code

data segment
        db 16 dup (0)
data ends

code segment
start:  mov ax,132      ;把要显示的内存数据132,丢进ax进行转换成10进制(这里的132编译后会变成16进制的84H在内存中)
          mov cx,0
          mov bx,10
   s1:   mov dx,0
          div bx
          push dx
          inc cx
          or ax,ax
          jne s1
   s2:   pop dx
          add dl,48   ;把10进制数转ASCII码显示
          mov ah,2
          int 21h
          loop s2
                              
         mov ax,4c00h
         int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 09:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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