第一个程序

编写汇编源程序

assume cs:codesg
codesg segment
    mov ax,0123h
    mov bx,0456h
    add ax,bx
    add ax,ax    
     
    mov ax,4c00h
    int 21h
codesg ends
end

汇编语言源程序中,包含汇编指令和伪指令。汇编指令有对应的机器码,可以被编译为机器指令,最终被cpu所执行。伪指令没有对应机器码,不会被cpu所执行,但会被编译器执行,进行相关编译工作。

1. 伪指令(上例121011行)

1)段名 segment

             :

             :

         段名 ends

这是一对成对使用的伪指令,其功能是定义一个段。XXX segment表示定义一个段名为“XXX”的段,该段从此开始。XXX ends表示段名为“XXX”的段到此结束。

一个汇编程序由多个段组成,这些段用来存放代码,数据或当做栈空间来使用。

一个有意义的汇编程序至少要有一个段,这个段用来存放代码。

2end

汇编语言的结束标志,告诉编译器此处结束编译,程序结束。

3assume

假设某一段寄存器和程序中的某一个用segment..ends定义的段相关联。assume cs:codesg表示将CS寄存器与codesg相关联,将codesg段作为程序的代码段来使用。

2. 汇编指令(上例3-9行)

经编译,连接后转变为机器码,存储在可执行文件中

程序结束运行后,将cpu的控制权交还给使它得以运行的程序(常为dos系统)。由mov ax,4c00h   int 21h进行实现

编译与连接

编辑好的.asm源文件,通过masm+路径及文件名进行编译(不加路径即对当前文件夹下的asm文件进行编译),生成.obj文件

 

通过link+路径及文件名进行连接(不加路径即对当前文件夹下的obj文件进行连接),生成.exe文件

 

.exe文件的执行

直接在dos系统下输入文件路径加文件名进行执行

由于源程序中没有要显示的内容,此处屏幕上没有运行结果

程序的运行与追踪

1.      debug装载程序

1)程序加载后,ds存放程序所在内存区的段地址,该内存区德地址为ds0

2)内存区的前256100h)个字节为程序段的前缀(PSP),DOS用来和程序进行通信,该段作为数据区

3)从第256字节处往后的空间存放的是程序,cs的值为ds+10h

4)程序加载后,cx是存放代码的长度(字节)

2.      debug单步执行指令

-t 命令单步执行

-p 命令类似t命令,逐条执行指令,显示结果,但遇子程序,中断等时,直接执行,然后显示结果

-g 命令从指定地址处开始运行程序,直到遇到断点或程序结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值