实验2 汇编语言程序框架
大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤。
一、实验目的
- 学会由汇编语言源程序到可执行文件的生成过程,学会用Debug运行程序
- 学会用loop指令编制循环程序解决简单问题
- 学会用bx和loop指令配合访问连贯的内存空间
二、实验内容过程记录
任务1-编制第一个汇编程序
(1)将下面的程序保存为p1.asm,将其生成可执行文件p1.exe。
assume cs:code
code segment
mov ax,0123H
add ax,ax
mov ax,4c00h
int 21h
codesg ends
end
(2)在Debug中单步执行这个程序
(写编辑、编译、连接、运行各步骤的命令。贴图说明实验过程)
编辑:
编译命令: masm p1.asm
连接命令:link p1
运行命令:p1
修改后:编辑
编译命令: masm p1.asm
连接命令:link p1
运行命令:p1
任务2-栈的操作
任务2-阅读程序并验证
已知下面的程序段:
MOV AX, 2000H
MOV DS, AX
MOV AX,0
MOV BX,2
MOV CX,5
LOP:ADD AX,BX
ADD BX,2
LOOP LOP
MOV [0], AX
(1)阅读程序段,先说出程序的功能(可用算式表示)计算2+4+6+8+10的值
(2)程序运行的结果:(AX)=001EH,存放结果的内存单元的物理地址是20000H
(3)将这段程序嵌入到程序框架中,在每一行均加注释,编译、链接,通过在debug中运行验证结果。
(下面列出源代码,并截图说明运行的结果)。
编译:masm p2.asm;
连接:link p2;
Debug运行验证:
验证:
任务3-用[bx]和loop联合访问连续的内存单元
编程序,向内存0:200H到0:23FH依次传送数据0~63(3FH),即0:200H中为0,0:201中为1,……依此类推。
要求在源代码中的主要汇编指令后面,均通过注释标明其作用或意义。
(下面列出源代码,并截图说明运行的结果)。
编译,连接:
运行验证:
三、实验总结
略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略
四、自选题目(非必选)
- 编程序计算2^10,将最后结果保存在dx中
- 编程序,用loop指令计算从1到100的所有整数相加的和,运算结果请保存到寄存器DX中。
- 生成前10个斐波那契数,存放在2000:0为首地址的连续10个字
- 源代码:
运行验证:
2.源代码
运行验证:
3.源代码:
运行验证: