如何用汇编语言写个小程序“HELLO WORD!”

就是用最基础的汇编语言... 就是用最基础的汇编语言 展开
 我来答
汤旺河边
2009-03-24 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2675
采纳率:0%
帮助的人:2963万
展开全部
; Program Name: Hello.ASM

Hello SEGMENT ; 以“Hello”命名段
ASSUME CS:Hello,DS:Hello ;代码段和数据段在同一个段空间
ORG 100H ;指令从100H开始

Start: ;程序运行起始位置
MOV AX,3 ; 设置视频显示方式为文本显示,80x25,16色
INT 10H ; 调用视频中断
LEA DX,Prompt_Str ; 装入字符串地址
MOV AH,9 ; 控制台输出字符串
INT 21H ; dos功能调用

MOV AX,4C00H ; 结束程序
INT 21H ; dos功能调用

Prompt_Str DB 'Hello World!$' ; 要显示的字符串一定要以符号$作为结束符号

Hello ENDS ;段结束
END Start ;源程序代码结束
百度网友c3cc3f948
2009-03-24 · TA获得超过150个赞
知道答主
回答量:77
采纳率:0%
帮助的人:0
展开全部
又有人问这个问题,说实话你去网上随便找个教程,开始一定是这个。如果你连这个程序都不懂,那么即使有注解你也不一定看得明白,那些“段”,“中断”的概念也有得你学的。
还是写个你看一下,用DOS下常用的编译器MASM5的程序:

.model small ;这里说明是个小程序
.stack 100h ;这里定义了堆栈大小
.data ;定义数据
msg db 'holle world!$' ;DOS下的字符串以"$"结尾
.code
start: ;代码开始处
mov ax,@data
mov ds,ax
mov dx,offset msg
mov ah,09h
int 21h
mov ah,4ch
int 21h
end start ;代码结束处
在汇编里start就相当C语言里的main()了,是程序入口。int **就是中断,在ah里放了中断号,中断就是一些系统程序,有一点像函数(比函数低级多了)。 其它注解和上面的差不多。这里用了省略法定义段。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
颓废_小胖
2009-03-24 · TA获得超过992个赞
知道小有建树答主
回答量:1061
采纳率:0%
帮助的人:974万
展开全部
汇编的编译器有masm tasm nasm。你是初学者就用masm吧 ide就不要用了 有是有 像masmplus radmasm都是不错的 但是初学的话也用不到。
下面的代码我编译过了 可以显示hello word!图我就不上了。
data segment
db 'HELLO WORD!'
data ends
assume ds:data,cs:code
code segment
start:mov ax,data
mov ds,ax //置段寄存器ds值
mov ax,0b800H
mov es,ax //置段寄存器es值
mov cx,11 //设置循环次数
xor bx,bx //清bx值
xor di,di //清di值
s1:
mov al,[di]
mov byte ptr es:[bx],al //将hello word!每一位送入显存
add bx,2 //送下一位
inc di
loop s1
mov ax,4c00h
int 21h //将dos控制交还给command
code ends
end start

用masm编译 命令是masm+文件名 编译出obj之后 link+文件名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿钦公加
推荐于2016-08-28
知道答主
回答量:16
采纳率:0%
帮助的人:15.6万
展开全部
;堆栈段
;-----------------------------------------
stack segment stack
db 100(?)
stack ends
;数据段
;-----------------------------------------
data segment
szhello db 'hello,word',0dh,0ah,'$'
;-----------------------------------------
data ends
;-----------------------------------------
;代码段
;-----------------------------------------
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov ah,9
mov dx,offset szhello
int 21h

mov ah,4ch
int 21h
code ends
end start
这个就行了 编译一下就行了。解释就不打了应该看的明白吧。和下面的差不多。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式