关于汇编程序hello world代码的详细说明,需要解释一下每一段代码的意思,谢谢。

DATA SEGMENT
BUF DB 'Hello, world !$'
DATA ENDS
STACK SEGMENT STACK 'STACK'
DW 36 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

SEGMENT表示把代码分成不同的段,不同的段保存在不同的地址中。DATA SEGMENT表示这是数据段用来存储数据用的,STACK 是堆栈段,CODE是代码段,MOV AX,DATA 表示将DATA的段地址传递给AX,DS是段寄存器,MOV DX,OFFSET BUF是将BUF所代表的地址传递到DX中,AX,DX是通用寄存器。INT 21H,INT 是软中断,21H是函数的入口地址,至于前面的MOV AH,9是函数的参数。你查一下INT 21H的功能就可以知道参数是9的意思就是显示DS:DX中所指向的字符串,4CH是带返回码结束。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-15
DATA SEGMENT
BUF DB 'Hello, world !$'
DATA ENDS
将“Hello,world!”放到data segment里面 ‘$’为字符串结尾标志,标志为buf
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
将ds=data的段地址 dx=buf的偏移地址
MOV AH,9 INT 21H
ah=9中断 输出ds:dx字符串 这个查8086中断表可以知道的
MOV AH,4CH
INT 21H
ah=4c中断 程序结束本回答被网友采纳

经典HelloWorld 程序是什么?
“Hello, World”程序指的是只在计算机屏幕上输出“Hello, World!”(意为“世界,你好!”)这行字符串的计算机程序。下面以C语言为例子,代码如下:include <stdio.h> int main(void){ printf("\\nhello world!");return 0;}

解释下面一个汇编程序每一行代码的意思功能.
STRING DB 'Hello World!',13,10,'$' ;定义一个STRING字符串变量,初始值为Hello World!\\n ' 13,10'表示回车换行 $为字符串结束标志 DATAS ENDS ;数据段结束 CODES SEGMENT ;代码段开始 ASSUME CS:CODES,DS:DATAS ;假定各段使用的段寄存器,这句话是告诉 编译器的编译器在编译时遇见DATAS中的...

帮忙下解释下下面汇编程序每一行代码功能
hello db "hello,world!",0dh,0ah,"$"xxx db (?)data ends ;代码段 code segment assume cs:code,ds:data,ss:stack ;指定段地址 start:;下面两行是设置数据段地址 mov ax,data mov ds,ax ;下面两行是键盘输入并回显,将输入存到al中 mov ah,1 int 21h ;将al存到xxx中 mov xxx, a...

请解释下一个汇编各行意思!
'hello world!'后面的13,10和‘$’:13和10代表回车和换行符,'$'代表字符串结束符 LEA DX,STRING MOV AH,9 ;还有这里,请解释下,这个9代表什么,这个地方的使用规则如何 INT 21H 这里是dos功能调用,功能号为9的dos调用为输出一个字符串,调用之前要求字符串的段地址和偏移地址必须放在DS:DX中,...

谁给我写一个最简单的汇编语言程序
给新手的新手注释 :H表示地址 mov 是赋值的含义 R1,R2...是寄存器,main相当于C语言中主函数,是程 序的入口 0H~30H 一般用于存放中断函数无条件跳转语句(即为AJMP,SJMP,LJMP, 3者无条件跳转的地址量有限,LJMP最大(64Kbyte空间内语句可跳转),SJMP最小(-128H~+127H )) ,AJMP...

请问这段代码是什么意思 汇编 语言8086?
这个是内核引导扇区代码,不等同于普通的程序,(这里只是输出hello world)用nasm语言写成 1. org 0x7c00 因为计算机会将本段放置0x7c00位置,所以此时需要声明偏移(cs=0x7c00)接下来,将ss,cs,ds设成0x7c00,这样,才可计算数据、堆栈偏移 2. call会将ip指向函数入口,这是典型的函数调用 表示本...

求一汇编'hello world'转成HELLO WORLD
DATAS SEGMENT ;数据段开始 STRING DB 'hello Wowrld!','$' ;定义一个字符串,以$为结束标志 DATAS ENDS ; 数据段结束 CODES SEGMENT ;代码段开始 ASSUME CS:CODES,DS:DATAS ;通知汇编程序,源程序中定义的组由对应的段寄存器进行段的寻址 START:MOV AX,DATAS ;实现段址...

随便给我一个编程代码带意思谢谢
1、代码解释:以上这段代码是用C语言写出来的代码,他所解决的问题是:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。2、C语言介绍:C语言是一门通用计算机编程语言,...

汇编中的lea si,string1是什么意思?
data segment string1 db 'Hello World!' ;定义字符串 len equ $-string1 ;取字符串string1的长度 string2 db len dup(?) ;定义第二个字符串 data ends code segment main proc far assume cs:code,ds:data,es:data start: mov ax,data mov ds,ax mov es,ax ;使当前数据段和当前附加段...

求一段简单的MASM32的汇编代码
str1 db "hello$"str2 db " world$"str3 db ?data ends code segment assume cs:code,ds:data start:push ds sub ax,ax push ax mov ax,data mov ds,ax ;将str1放入str3 mov cx,5 mov si,0 loop1:mov bl,str1[si]mov str3[si],bl add si,1 loop loop1 ;再将str2与str3...

相似回答
大家正在搜