一段简单的汇编语言源程序【2】

此文章主要记录代码的编写,编译,连接,调试过程,相关工具的安装和使用介绍在前面的文章中已提供。
主要功能通过栈实现两个数的交换

源代码如下:

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
ends	

保存p1.asm,打开DOCBOX,运行如下命令进行编译和连接:

masm p1.asm;
link p1.obj;

运行debug进行调试:

debug p1.exe

r命令查看各个寄存器情况:

在这里插入图片描述
u命令查看代码:

一段简单的汇编语言源程序【2】_第1张图片
t命令进行单步调试:

执行了 mov ax,2000H

在这里插入图片描述

执行了 mov ss,ax

一段简单的汇编语言源程序【2】_第2张图片

执行了 add sp,+0a

源代码和具体执行的指令不一致什么原因?

mov sp,0
add sp,10

这里需要注意两点,一是编译连接对源程序进行了优化,两句变成了一句,二是10是十进制,相当于十六进制的A

在这里插入图片描述

pop ax

一段简单的汇编语言源程序【2】_第3张图片

pop bx

一段简单的汇编语言源程序【2】_第4张图片

push ax
一段简单的汇编语言源程序【2】_第5张图片
push bx
一段简单的汇编语言源程序【2】_第6张图片
push ax
一段简单的汇编语言源程序【2】_第7张图片
结束
mov ax,4c00H
int 21H

一段简单的汇编语言源程序【2】_第8张图片

你可能感兴趣的:(汇编语言,汇编,代码)