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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用汇编语言写个小程序“HELLO WORD!”相关的知识,希望对你有一定的参考价值。

就是用最基础的汇编语言

; 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 ;源程序代码结束
参考技术A 又有人问这个问题,说实话你去网上随便找个教程,开始一定是这个。如果你连这个程序都不懂,那么即使有注解你也不一定看得明白,那些“段”,“中断”的概念也有得你学的。
还是写个你看一下,用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里放了中断号,中断就是一些系统程序,有一点像函数(比函数低级多了)。 其它注解和上面的差不多。这里用了省略法定义段。
参考技术B 汇编的编译器有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+文件名。
参考技术C ;堆栈段
;-----------------------------------------
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
这个就行了 编译一下就行了。解释就不打了应该看的明白吧。和下面的差不多。本回答被提问者采纳

以上是关于如何用汇编语言写个小程序“HELLO WORD!”的主要内容,如果未能解决你的问题,请参考以下文章

如何用python写个串口通信的程序

如何用记事本编程

如何用c读取文件

Wcf hello word

请给我写个,用C语言做的,10进制转换ASCII的程序。需要验证过的

Python入门-Hello Word