关于网友提出的“ 求一个汇编helloworld”问题疑问,本网通过在网上对“ 求一个汇编helloworld”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 求一个汇编helloworld描述:
最好可以短一点。。。 还有说明编译器。
解决方案1:
assume cs:code,ds:data
data segment
db 'hello world!','$'
data ends
code segment
main:
mov ax,data
mov ds,ax
mov ah,09h
mov dx,0
int 21h
mov ax,4c00h
int 21h
code ends
end main
用masm5.0或masm6.0或与其兼容的IDE都行。
先输入debug
然后按q退出
然后再输入程序名执行才能看到效果。 解决方案2:
DATAS SEGMENT
a db 'Hello world!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,a
mov ah,9
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
编译器我是用MasmForWindows,用masm也一样
Masm5或Tasm4.1能用
解决方案4:
DATA SEGMENT ;数据段开始
NOTE DB 'Hello World!',0ah,0dh,'$'
DATA ENDS ;数据段结束
CODE SEGMENT ;代码段开始
ASSUME CS:CODE, DS:DATA ;将代码段指定给CS寄存器,将数据段指定给DS寄存器
BEGIN: MOV AX,DATA ;AX累加器
MOV DS,AX ;DS数据段寄存器
MOV DX,OFFSET NOTE ;这句可以用LEA DX,NOTE来替代,DX是数据通用寄存器
MOV AH,09H ;09H对应的是显示字符串
INT 21H ;注意,INT 21H是用来调用功能的,具体区别用AH来识别
MOV AH,4CH ;4CH功能在于让你退出程序,
INT 21H ;调用功能,由上面的AH决定,这句就是要退出程序了
CODE ENDS ;代码段结束
END BEGIN
这个是VC9自己生成的汇编代码
.686P
.XMM
.model flat
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
_DATA SEGMENT
$SG745 DB 'hello world', 00H
_DATA ENDS
PUBLIC _main
EXTRN _printf:PROC
_TEXT SEGMENT
_main PROC
push ebp
mov ebp, esp
push OFFSET $SG745
call _printf
add esp, 4
xor eax, eax
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END