汇编ing...

本文介绍了一个简单的汇编语言程序,该程序能在控制台上输出HelloWorld字符串,并详细解释了程序每一部分的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记性不好,mark一下

源程序:

DATAS SEGMENT
     STRING DB 'Hello World!',13,10,'$'
DATAS ENDS

CODES SEGMENT
     ASSUME    CS:CODES,DS:DATAS
START:
     MOV AX,DATAS
     MOV DS,AX
     LEA DX,STRING
     MOV AH,9
     INT 21H
  
     MOV AH,4CH
     INT 21H
CODES ENDS
    END   START

DATAS SEGMENT;定义数据段标识为“DATAS”
STRING DB 'Hello World!',13,10,'$' ;定义字符串数组,13和10分别是回车和换行,'$'为结束符
DATAS ENDS;数据段结束

CODES SEGMENT ;定义代码段标识为“CODES”
ASSUME CS:CODES,DS:DATAS ;设置数据段和代码段的默认寄存器
START: ;程序起始标志,可以任意取名,但必须和最后结束标志end配合使用
;其作用实际上是告诉操作系统加载exe程序时将IP指向这个位置
MOV AX,DATAS;本句和下一句给DS赋值,CS不需要程序来赋值
MOV DS,AX

LEA DX,STRING ;把字符串首地址存到DX寄存器中
MOV AH,9 ;本句和下一句调用参数为9的DOS中断,在控制台上输出字符串
INT 21H ;找本书看看,就知道为什么STRING要以'$'结束了

MOV AH,4CH ;参数为4ch的功能调用,结束程序,返回操作系统
INT 21H

CODES ENDS
END START

 

很抱歉,上一次回答时出现了打字错误。以下是完整回答: 好的,我知道了你的问题。首先回答你的第一个问题: 编写简单的 C 程序,功能为在屏幕上输出“Hello gcc!”,然后使用 gcc 编译器的不同选项观察不同阶段所生成的文件。 以下是示例代码: ```c #include <stdio.h> int main() { printf("Hello gcc!\n"); return 0; } ``` 使用 gcc 编译器的不同选项观察不同阶段所生成的文件: - E 选项:只进行预处理,生成 *.i 文件。命令为:`gcc -E hello.c -o hello.i` - S 选项:只进行编译,生成汇编代码 *.s 文件。命令为:`gcc -S hello.c -o hello.s` - c 选项:只进行编译和汇编,生成目标文件 *.o 文件。命令为:`gcc -c hello.c -o hello.o` - g 选项:生成可调试的可执行文件。命令为:`gcc -g hello.c -o hello` 执行以上命令后,可以观察到生成了不同的文件,如 *.i、*.s、*.o 和可执行文件 hello。 接下来回答你的第二个问题: 编写一个由头文件 greeting.h、自定义函数文件 greeting.c、主函数文件 myapp.c 构成的 C 程序,并根据这三个文件的依赖关系编写 Makefile 文件。 以下是示例代码: greeting.h: ```c #ifndef GREETING_H #define GREETING_H void say_hello(); #endif ``` greeting.c: ```c #include <stdio.h> #include "greeting.h" void say_hello() { printf("Hello, World!\n"); } ``` myapp.c: ```c #include "greeting.h" int main() { say_hello(); return 0; } ``` Makefile 文件: ```makefile CC = gcc CFLAGS = -Wall -g OBJS = greeting.o myapp.o TARGET = myapp $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $< greeting.o: greeting.c greeting.h myapp.o: myapp.c greeting.h .PHONY: clean clean: rm -rf $(OBJS) $(TARGET) ``` 在命令行中执行 `make` 命令即可编译并生成可执行文件 myapp。如果需要清除生成的文件,可以执行 `make clean` 命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值