汇编程序软件:emu8086
当然使用masm和link也挺好。
assume cs:codesg codesg segment mov ax,2000h mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00h int 21h codesg ends end
说明
结果如下:
可以整体或分步运行,可以同时看到寄存器的状态etc。
一个源程序写出到执行的过程
编程 —>.asm —> 编译 —> .obj —> 连接 —> .exe —> 加载 —> 内存中的程序 —> 运行
使用汇编语言编译程序对源文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可执行文件。
汇编语言编译程序??世界上第一个编译器是怎么来的?
连接程序??哈哈
伪指令
汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终由CPU所执行。而伪指令没有对应的机器指令,最终不被CPU所执行。那谁来执行伪指令呢?伪指令由编译器来执行,编译器根据伪指令来进行相关的编译工作。
(上面代码中:段名,end,ends都是伪指令)
执行
谁来执行的问题。
一个程序将咱们要运行的程序掉入内存之后,就完事了?
计算机中CPU是老大。老大每次从CS:IP位置开始执行程序。
所有调入程序后,CS和IP的值要修改。修改成程序再内存中的位置。(但是程序在内存中什么位置? ) 该程序执行完之后,得返回。如何返回?所有改程序在调入之前是不是还得保存当时得现场。