第一个汇编程序

来源:互联网 发布:有什么二次元软件 编辑:程序博客网 时间:2024/06/01 09:59

第一个汇编程序

①源程序 Hello.asm

assume cs:Hello ;假设ip为Hello,cs:ip指向的是程序执行的内存地址Hello segment   ;定义一个段Hello    mov ax,2    ;3个字节    mov bx,3    ;在段中写汇编语句,3个字节    mov ax,4c00H;3个字节    int 21H     ;程序返回 2个字节Hello ends      ;段的结束地end             ;程序的结束地

② 程序运行原理

要执行A程序必须要有一个正在执行的B程序,B程序将A程序加载进内存,将CPU的控制权交给A程序,B程序暂停执行,当A程序执行完后,再将CPU控制权交给B

  • 那么如何将CPU执行权返回给B程序呢?该返回过程叫做程序返回

    mov ax,4c00H int 21H

这两条指令做的就是程序返回,具体指令含义不解释

③编译,连接,运行,跟踪程序

  • 首先把masm和linker软件添加到环境变量,两个程序可自行网上下载
  • 编译:


OBJ:目标文件(要的结果)
LST:列表文件名,中间结果
CRF:交叉引用文件

完成之后可看到有一个HELLO.OBJ文件

  • 连接

执行link命令,输入HELLO.OBJ一路ENTER,最后生成HELLO.EXE文件

  • 运行 Debug跟踪 HELLO.EXE

可以看到,用U命令查看即将执行程序的汇编指令,就是我们刚刚写的Hello.asm
,CX代表的是U命令查看到的本程序的指令大小,B(11)个字节,

  • 程序的所在内存地址:
    DS+10:0 1447 也是 CS的值,CPU通过SS段寄存器以及SP寄存器(偏移地址)来指向栈顶元素的地址,SS也就是栈顶的地址


最后BX变成了3,AX变成了4c00,要用p命令执行int 21H,不为什么

两个软件的下载地址链接:http://pan.baidu.com/s/1gfdWds3 密码:e103

0 0
原创粉丝点击