汇编 Hello World

2024-12-24 18:41:51
推荐回答(4个)
回答1:

程序呢其实并不是很难,你有电脑的话就去下载一个王爽的《汇编语言》。

如果你是初学的话这个程序时看不懂的。因为这里没有用传统的中断输出。而是用显存输出的。。
MOV AX,0b800h ;这里是把0b800h放入ax,为什么呢?因为在这个首地址内的内容是要输出的。实际上是dos下的显存区域,你在这里的数据会自动显示到显示屏上面。(《汇编语言》书的第九章,实验九)
MOV ES,AX
这里:MOV BL,160,dos下一行有80个字母宽度。为什么要加160呢?因为一个字要分2部分。前部分放ASCII码后面放它输出时候的style如颜色,闪烁(不是这样就反了)

子程序的作用就是把hello里面的内容放入ES:...段的内存区域、

我把程序调试了下。但我也有些不明白的地方。就是为什么它在ES:1230才加入数据?
1E是字母的显示style。
我运行了但是看不到输出。不知道你怎么样?
我这里有个类似的。写的比较直观。
assume cs:code,ds:data
data segment
db 'Welecome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov di,0
mov cx,17
mov es:[bx],byte ptr 42h
s: mov dl,[bx]
mov es:[di+160*11+54],dl
mov es:[di+160*11+55],byte ptr 0cah
inc bx
add di,2
loop s
mov ah,4ch
int 21h
code ends
end start

回答2:

data segment
string db'Hello World!!!',0AH,0DH,'$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov dx,offset string
mov ah,09h
int 21h
mov ah,07h ;7号功能调用从键盘接收一个字符
int 21h
mov ah,4ch
int 21h
code ends
end start

这次绝对可以了
汇编语言爱好者为您解答,选我哈

回答3:

在Windows的环境下,指令:

mov ah,4ch
int 21h

一般都是立即停止应用程序,关闭它的窗口,立即返回到Windows的界面。
应该使用““命令提示符””的窗口,在其中使用 DOS 的程序,结束时,就能停留,保持显示。

回答4:

我用你的代码交作业都可以啊啊