汇编从入门到入土三

  1. 从汇编程序开始
  2. 可执行文件的加载过程
  3. 实验3 编译链接跟踪

从汇编程序开始

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

伪指令

段名 segment
段名 ends

endends 不一样, end标记整个程序的结束
assume 将有特定用途的段和相关的段寄存器关联起来

程序返回

    mov ax,4c00H
    int 21H

编写代码,使用 MASM.exe 编译,然后使用 LINK.exe 进行链接

运行当然是没有结果的,我们需要使用 debug 调试

可执行文件的加载过程

程序加载的时候,找到一个段地址 SA:0000,程序从 SA+10H:0000 处开始运行,SA 存放在 ds寄存器中

刚加载进内存中时,

此时看到 ds 寄存器的内容为 075AH ,所以程序的物理地址就是 ds+10h ,正好符合
在int21 时需要使用 p命令执行

实验3 编译链接跟踪

assume cs:codesg
codesg segment
    mov ax,2000H  ; AX=2000H
    mov ss,ax     ; SS=2000H
    mov sp,0      ; SP=0
    add sp,10     ; SP=10
    pop ax        ; SP=000CH, AX=076AH
    pop bx        ; SP=000EH, BX=7206H
    push ax       ; SP=000CH
    push bx       ; SP=000AH 
    pop ax        ; AX=7c06H
    pop bx        ; BX=076AH
    mov ax,4c00H
    int 21H
codesg ends
end

PSP 的头两个字节是CD20,用debug加载,查看PSP的内容


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论

文章标题:汇编从入门到入土三

文章字数:309

本文作者:prontosil

发布时间:2020-03-10, 21:29:29

最后更新:2020-03-10, 22:46:52

原始链接:http://prontosil.com/posts/2e9d33db/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录