帝企鹅的日记 发表于 2018-6-20 23:32:45

如何实现任意数输出?求助

例如:
....
a db 132
b db 9
cdb 100
....
用一个通用的汇编算法解决输出

人造人 发表于 2018-6-20 23:45:04

问题问的太模糊

57158597@qq.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写很方便,想自己往显卡地址写也可以只是比较复杂

帝企鹅的日记 发表于 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是换行符


就是在我将内存中的十进制数输出

57158597@qq.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
页: [1]
查看完整版本: 如何实现任意数输出?求助