16位汇编智能编译环境的搭建

 

    16位汇编的上机有以下几步:编辑源代码,编译,链接,调试。
    (1)Uedit32或者记事本等编辑源代码,保存为.asm(此处为Hello.asm)。一般选用Uedit32,因为可以语法着色,高亮显示、显示行号、列号等。

stack segment
    db 100 dup(?)
stack ends

 

data segment
    message db 'Hello, World',0dh,0ah,'$'
data ends

 

code segment
     assume cs:code,ds:data,ss:stack
start:
    mov ax,data
    mov ds,ax
 
     mov dx,offset message
    mov ah,9
    int 21h
 
   mov ah,4ch
   int 21h
code ends
 end start

    (2)masm编译源文件,生成obj目标文件。
    在提示符键入masm Hello.asm回车
    显示:Object filename [Hello.obj]:回车
    显示:Source listing [NUL.LST]:回车
    显示:Cross-referce [NUL.CRF]:回车
    显示 0 Warning Errors
         0 Server Errors
    说明成功编译通过
   
   (3)link,生成exe文件
    在提示符键入link Hello.obj 回车
    显示:Run File [Hello.obj]:回车
    显示:List File [NUL.MAP]:回车
    显示:Libraries [.LIB]:回车
    显示:LINK:warning L4021:no stack segment
    最后显示,没有堆栈,不用理会。
   

    (4)debug调试程序,查看结果是否正确。
    具体使用,参阅相关资料。

    注:(2)、(3)为了跳过输入目标文件名、资源列表、执行文件名等,可以在后面加一个分号。分别为
    masm Hello.asm;
    link Hello.obj;


    上面(2)(3)(4)步中用到的程序假设是放到当前目录下,需要设置路径,如果每次设置路径,则会比较麻烦。为了管理方便,把masm.exe、link.exe和debug.exe等程序单独放在一个文件中。每个汇编源文件一个文件夹。

■方法一:永久设置环境变量
    把masm.exe、link.exe和debug.exe等程序放在J:/Asm16/00_Tool(自己想怎么放就怎么放,保持目录与环境变量值一致就可以了。)
    设置环境变量:我的电脑→属性→高级→环境变量→Administrator的用户变量,双击path,编辑用户变量中的变量值,在后面添加“;J:/Asm16/00_Tool”不包含引号。也可以在系统变量的path中添加。
    在J:/Asm16/00_Tool目录下新建一个文件v.bat,内容为
    MASM %1.asm;
    link %1.obj;
    新建一个CmdLine.bat文件,内容为cmd。把CmdLine.bat每个汇编例子文件夹下,需要编译、链接的时候,双击CmdLine.bat,再输入v hello就可以了。
   

■方法二:把masm.exe、link.exe、debug.exe和CmdLine.bat拷贝到系统目录下,如E:/WINNT/system32下面也是可以的。

■方法三:方法一和二都是永久性的设置,再来一个临时性的设置。
     把masm.exe、link.exe、debug.exe拷贝到J:/Asm16/00_Tool目录下,并建立SetPath.bat和v.bat文件,
SetPath.bat内容:
     set path=J:/asm16/00_Tool;%path%
     cls
v.bat文件内容:
    MASM %1.asm;
    link %1.obj;

在需要汇编的文件夹下,建立“设置路径_命令窗口.bat”文件,其内容:
call J:/asm16/00_Tool/SetPath.bat
cmd
汇编的时候,双击“设置路径_命令窗口.bat”,再输入v hello回车就可了。

说明:以上设置都是基于虚86模式而言的。在实模式下SetPath.batm内容中的set path=J:/asm16/00_Tool;%path%去掉set;设置路径_命令窗口.bat文件改成自己喜欢的字母文件名,内容中的cmd一行去掉。

假设读者已经掌握了使用C 语言编写程序的技术如果读者没 有掌握这一技术可以参考市面上的一些书目还可以在原来的一 些Dos 下的一些C 开发环境下进行练习如Borland 公司的Dos 下 的TC 或者BC 编译器 手册中的例子都经过验证相应的编译器的版本是V30L02 汇编器的版本是V30L04 链接器的版本是V30L05 要注意的是 有的例子直接使用在编译时会有警告提示有的例子直接使用在链 接时会有出错提示如果读者对照英文的C 语言手册来看会发现 两者有些差别那是因为英文手册所对应的编译器/汇编器/链接器的 版本号较低为此在中文手册中作了修正 目录 前言.............................................................................................................1 目录.............................................................................................................1 第一章 C 预处理器.................................................................................1 第一节 预处理和编译的结构.............................................................................2 第二节 宏定义.....................................................................................................3 一. 不带参数的宏定义...................................................................................3 二. 带参数的宏定义.......................................................................................4 第三节 文件包含(#include 指令) .......................................................................6 第四节 条件编译.................................................................................................7 第五节 其它预处理指令.....................................................................................9 第二章 C 编译器...................................................................................10 第一节 编译的结构...........................................................................................11 第二节 C 编译器的数据调用协议...................................................................12 一. 内存模式和数据在内存中的存储格式.................................................12 二. 与汇编语言程序的接口.........................................................................18 三. SECTION.................................................................................................20 四. 函数调用接口.........................................................................................28 五. 中断函数调用接口.................................................................................34 六. C 编译器的限制...................................................................................36 第三节 C 编译器的特殊扩充...........................................................................38 一. 嵌入汇编.................................................................................................38 二. 中断相关的函数.....................................................................................41 三. I/O 变量的定义.......................................................................................46 四. direct 变量的定义...................................................................................47 五. 近程/远程变量(或函数)的定义.............................................................48 六. 函数的内嵌扩展.....................................................................................50 七. 更改SECTION 名..................................................................................52 八. 寄存器区的设置.....................................................................................53 九. 中断级别的设置.....................................................................................54 十. 是否使用系统堆栈的设置.....................................................................55 十一. 系统堆栈/用户堆栈都可用的设置...................................................56 十二. 不保存寄存器的中断函数.................................................................57 十三. 内置的函数.........................................................................................58 十四. 预定义的宏.........................................................................................63 第三章 C 库函数...................................................................................64 第一节 库函数概述...........................................................................................65 一. 库文件和内存模式..........................................................................65 二. 头文件.....................................................................................................66 三. 库文件对应的SECTION 和内存模式..................................................66 四. 依赖于系统的库函数.............................................................................66 第二节 库函数的协作.......................................................................................68 一. 库函数协作.............................................................................................68 二. 初始化和退出函数.................................................................................68 三. 低级库函数类型.....................................................................................68 四. 标准库函数和其所需调用的低级库函数.............................................69 第三节 低级库函数的详细说明.......................................................................70 一. open 函数................................................................................................70 二. close 函数...............................................................................................71 三. read 函数.................................................................................................71 四. write 函数................................................................................................72 五. lseek 函数...............................................................................................72 六. isatty 函数...............................................................................................73 七. sbrk 函数.................................................................................................73 八. _exit 函数................................................................................................74 九. _abort 函数.............................................................................................74 第四章 嵌入式C 语言的特殊之处......................................................75 第一节 StartUp 启动文件.................................................................................76 一. 如果强行不使用StartUp 启动文件..............................................76 二. 使用一个简单的StartUp 启动文件......................................................77 三. 随富士通C 编译器附带的StartUp 启动文件.....................................78 第二节 C 语言与汇编语言互相调用以及嵌入汇编.......................................82 附录一.......................................................................................................87 1 编译选项与集成开发环境........................................................................87 附录二.......................................................................................................96 1 库函数定义的类型,宏和函数...................................................................96
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值