请大家帮我分析一个简单的程序

shushengdmj 2007-04-09 04:02:32
我是个正在自学汇编的新手,看到一个简单的程序有些不明白,请大家帮我分析下,请看下面这段程序。




;一个显示Hello World!程序
DATAS SEGMENT
STRING DB 'Hello World!',13,10,'$'
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODES ENDS
END START


看完后大家能不能告诉我这个程序里的输出语句是什么呀,我搞不清楚汇编是怎么写输出语句的,也没有像c或c++里的printf或cout,它是怎么输出的,谢谢!
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shushengdmj 2007-04-10
  • 打赏
  • 举报
回复
明白,谢谢了。
gallanthunter 2007-04-09
  • 打赏
  • 举报
回复
Hello World!

输出一般都是调用中断
達魔 2007-04-09
  • 打赏
  • 举报
回复
你查一下DOS的中断向量表就清楚了,它是用21H号中断的9功能进行输出的。
shushengdmj 2007-04-09
  • 打赏
  • 举报
回复
只帮我分析下我那个程序就行了,谢谢
JeanChenYu 2007-04-09
  • 打赏
  • 举报
回复
夸我了.
wltg2001 2007-04-09
  • 打赏
  • 举报
回复
楼上说得对,这种方法叫直接写屏,当时很流行的UCDOS就是用这种方法的。也就是直接写内容进显存。在DOS时代的游戏中很常用。
JeanChenYu 2007-04-09
  • 打赏
  • 举报
回复
想往屏幕上打字,还可以直接写屏.
比如,把数据段中的一句话显示出来:
假定,你现在的显示缓冲区的物理地址是0B8000H,须向此段输入
你要写的语句.
mov dx,seg STRING
mov di,offset STRING
mov es,dx
mov dx,0b800h
mov ds,dx
mov si,144h;0B800H 段中偏移144H处开始写.
mov cx,0ch;字符的个数.
mov bh,0ah;字符的颜色.0ah:green,9:blue....
PAINT1:
mov al,es:[di]
inc di
mov [si],al
inc si
mov [si],bh
inc si
loop PAINT1
mov ax,4c00h
int 21h
wltg2001 2007-04-09
  • 打赏
  • 举报
回复
这是DOS中的汇编,利用DOS中断输出,应该是很古老的东西了,具体我也不记得了,输出应该是:MOV AH,9
int 21H
int 是调用中断的语句,而DOS的系统功能都是21H,有许多功能,包括输入输出,AH中放功能号。下面这句:MOV AH,4cH
int 21H
我记得,是退出到DOS操作系统。

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧