首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

新手,刚刚学汇编

2012-03-30 
新手求助,刚刚学汇编。c语言HELLO WORLD!程序大家都知道,即:#include stdio.hint main(void){printf(HEL

新手求助,刚刚学汇编。
c语言HELLO WORLD!程序大家都知道,即:
#include <stdio.h>
int main(void)
{
  printf("HELLO WORLD!");
  return 0;
}

初学写了个汇编的,下面是代码: 

下面是运行结果:


问题是:1.为什么HELLO WORLD!前会有一串乱码,并且有个no stack segment 的警告?
  2.编译--链接要回车好多次,显得很繁杂,有没有一步到位的方法?
  3.MOV DX,AX能改成MOV DS,AX吗?
貌似C语言隐藏了很多东西,比如中断调用。
我知道这些个问题很小白,但是我反复运行程序,却越搞越乱。希望哪位热心给个解答,诚谢!

[解决办法]
第二条指令写错了吧,应该是 mov ds, ax 而不是 mov dx, ax
[解决办法]
mov ds,ax 你写成了 mov dx,ax

Assembly code
data segment        buf db 'hello world! %$#@'data endscode segment    assume cs:code,ds:datastart:        mov ax,data        mov ds,ax     ;这一行你写成了 mov dx,ax    lea dx,buf    mov ah,09    int 21h    mov ah,4ch    int 21h        code endsend start
[解决办法]
1.为什么还有个no stack segment 的警告?
去掉这个警告的方法:
assume ds:data,cs:code,ss:stack
...
定义一个栈段,假如红字
stack segment stack
dw xxx dup (0)
stack ends

2.编译--链接要回车好多次,显得很繁杂,有没有一步到位的方法?
有,加上分号,即可。
masm ur.asm;
link ur.obj;
[解决办法]
探讨

编译--链接要回车好多次,显得很繁杂,有没有一步到位的方法?
有,加上分号,即可。
masm ur.asm;
link ur.obj;

我下面是按你说的运行程序的过程,可以不再多次回车,但是貌似无法得到结果。

热点排行