如何在显示器上打印一个变量? 就像C中的printf()那样.

dislimit 2003-12-12 11:35:05
如何在显示器上打印一个变量? 就像C中的printf()那样.
...全文
113 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
machinecode 2003-12-14
@@1 db 'a'



mov dl,@@1
mov ah,02
int 21h


结果就是
a
  • 打赏
  • 举报
回复
dislimit 2003-12-13
问一个题外话.
byte “L= %ld”,13,10,0
dword i,u,c,i,c,s,l
这两句是什么意思啊?(前面没有Label,显然不是变量声明)
  • 打赏
  • 举报
回复
xiaofeixia118 2003-12-13
首先你要明白相关的DOS中断如:INT 1H表示让用户输入一个字符到AL
INT 2H 表示把DL中字符输出到屏幕上。INT 09H表示把以DX里面的地址为首的字

符串输出到屏幕上,直到符号结束
例如:
MOV AH,02H
INT 21H
就是把DL中的字符输出到屏幕上

data segment
buffer db 'hello! $'
data ends
.....
....
mov dx,offset buffer ;DX 为BUFFER的首地址
mov ah,09h
int 21h
就是把HELLO!输出到屏幕
  • 打赏
  • 举报
回复
紫郢剑侠 2003-12-12
一般先用DOS的21H中断的02H(输出单个字符)和09H(输出字符串)来实现.如果变量是数值,还要先转换成对应的ASCII字符串.

要像C中的printf()那样进行变量个数不固定的输出就比较难, 也许能找到高手写好的函数库.
  • 打赏
  • 举报
回复
snowdyalan 2003-12-12
AH 功能 调用参数 返回参数
00 程序终止(同INT 20H) CS=程序段前缀
01 键盘输入并回显 AL=输入字符
02 显示输出 DL=输出字符
03 异步通迅输入   AL=输入数据
04 异步通迅输出 DL=输出数据
05 打印机输出 DL=输出字符
.......
09 显示字符串 DS:DX=串地址
'$'结束字符串

所以你先把要输出的东西根据你预先设定的数据类型MOV进DL或DX
然后mov ah,02h/09h
int 21h
就可以了


  • 打赏
  • 举报
回复
dislimit 2003-12-12
如果我要输出一个字符.那么:
mov ah,02h
int 21h
;然后应该怎么写?

如果要输出字符串呢?

请写个短例子,谢谢!
  • 打赏
  • 举报
回复
紫郢剑侠 2003-12-12
没有.

不过可写个通用过程来实现.
  • 打赏
  • 举报
回复
dislimit 2003-12-12
不是吧?
没有直接打印数值的方法?
  • 打赏
  • 举报
回复
相关推荐
发帖
汇编语言
加入

2.1w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
申请成为版主
帖子事件
创建了帖子
2003-12-12 11:35
社区公告
暂无公告