汇编语言程序设计实验报告四

南京信息工程大学实验报告 实验名称 实验 4 [bx]和loop的使用 实验日期 得分

学院 计软院

专业 计算机科学与技术

年级 2017级

班次 5班 姓名 陈奕明 学号 20171308194

一、实验目的

1. 理解和掌握寄存器间接寻址方式[bx]

2. 通过汇编指令loop的使用理解编程语言中循环的本质

3. 熟练掌握使用debug按需调试完整汇编源程序的方法

二、实验准备
1. 学习/复习第 5章使用[bx]和loop实现循环的编程应用示例(教材 5.5节,5.8节)

2. 复习第3章「栈」的知识 3. 结合第4章课件,复习完整汇编源程序编写→汇编→连接→运行→调试的方法

三、实验内容
1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据0403H。

2. 综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据 0~63(3FH)。 (1)必做:综合使用loop, [bx], mov实现 (2)选做*:利用栈的特性,综合使用 loop,push 实现(限定仅使用 8086 中已学过 指令实现)

3. 教材实验4(3)(P121)

四、实验结论
1. 实验内容1

(1)源代码:

assume cs:code
code segment

mov ax, 0b800h
mov ds, ax

mov bx,07b8h
mov ax,0441h

mov cx,15

s: mov ds:[bx],ax
add bx,2
loop s

mov ah,4ch
int 21h
code ends
end

第一次实验截图:

汇编,连接生成可执行文件完成。

可执行文件执行结果如下:与老师所给样件符合

(2)将源代码程序中字数据0403H→修改为0441H,再次运行,截图显示运行结果。

数据修改后,可执行文件执行结果如上

2. 实验内容2(必做部分) (1)源代码 (2)汇编、链接无误后,灵活使用 debug 的 t 命令、g 命令、p 命令调试,用 d 命令 查看0:200~0:23F,确认是否将0~63传送至此段内存区域。这部分,要求有截图。 (选做部分,如完成,也按上述要求在博客文档中撰写相应内容)

源码如下:

assume cs:code
code segment

mov ax, 0020h
mov ds, ax

mov cx,64
mov bx,0

s: mov ds:[bx],bx
add bx,1
loop s

mov ah,4ch
int 21h
code ends
end

实验结果如上,0:200~0:23F所指的内存空间已经按照其连续顺序被赋了指定的值
3. 实验内容3

(1)源代码 :

assume cs:codesg
codesg segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,0017h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end

(2)汇编连接后,灵活使用debug的t命令、g命令、p命令调试,用d命令查看0:200 之后的若干字节,观察是否将mov ax, 4c00h之前的指令复制到指定内存,这部分要求有截 图,并以文字方式说明空白处填写依据。

这道题思路如下:

首先第一个空应该是填cs 因为cs寄存器指向了程序的开始处,而第二个空的话我们知道这段程序的代码长度在cx中存放(用debug来调试时)。所以我们可以先在 2 空处填上cx,即先让程序能编译链接生成对应的target.exe文件,然后用debug t5exe来对其调试,然后输入r后查看cx的值,如果不知道mov ax,4c00h 和int 21h占了多少字节,都可以通过输入u后就可以看到各条命令占了多少字节。获得了总长度之后,再用其减去mov ax,4c00h 和int 21h占用的字节,所得的结果就是(2)出所应该填写的值了。

 

汇编,连接,生成可执行文件。

由这里可以看到cx寄存器的值为1B,那还要减去mov ax,空间4c00h 和int 21h这两条指令的大小

由上可得,循环次数为17次,所以第二空填入为0017h

填入后重新调试代码,运行结果如下:

五、总结与体会
loop可以大大简化程序中需要重复执行的部分,提高了代码的可读性,需要在以后的学习中认真体会这一点。

原文地址:https://www.cnblogs.com/cymwn-com/p/10018172.html

时间: 2024-10-06 09:00:51

汇编语言程序设计实验报告四的相关文章

C语言程序设计实验报告四

C程序设计实验报告 姓 名:赖瑾 实验地点:家 实验时间:2020年4月9日 实验项目:5.3.1练习2 求数列的前n项和 5.3.2练习2 求水仙花数 5.3.4 十进制转换 5.3.5练习1 百马百担问题 5.3.5练习2 求等差数列 5.3.5练习3 食品分配问题 九九乘法表的实现 一.实验目的与要求 1.熟练地掌握while,do while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换.各自的适应性.循环嵌套的使用. 3.掌握如何在循环语句种使用break,contin

汇编语言程序设计实验报告三

一.实验目的1. 掌握汇编语言源程序(8086 dos 汇编)编写→汇编→链接→调试的方法2. 加深对 1-4 章基础知识的理解二.实验准备1. 结合第 4 章课件和教材,学习/复习完整汇编源程序编写→汇编→连接→运行→调试的方法2. 复习第 1-3 章以下基础知识:(1)寄存器用法① 通用寄存器 AX, BX,CX, DX: ② 段寄存器 CS, DS, SS 和两个特殊寄存器 IP: (2)内存访问,特别是多字节数据的存.取:(3)汇编指令用法,注意其合法使用形式① 数据传送类指令:mov,

汇编语言程序设计实验报告二

实验目的: 1.熟练掌握使用debug工具编写和调试汇编命令的方法: 2.理解并掌握内存中多字节数据的存放: 3.理解并掌握[栈]内存空间的特性和使用: 4.理解并掌握8086汇编指令 mov,add,sub,push,pop的用法. 实验步骤: p74(1) 下图为书上实验没修改数据之前所得到的结果,有错误还希望大家指正!!! 根据实验二的要求,在使用-a进行调试之前,使用-e命令修改内存单元,如下图所示 注:因为之前修改完之后不小心cls清了一下屏,所以0021:0~0021:7的默认值就不

20145326《Java程序设计》实验二Java面向对象程序设计实验报告

20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 一.单元测试 1. 三种代码·伪代码·产品代码·测试代码Example:需求:我们要在一个MyUtil类中解决一个百分制成绩转成“优.良.中.及格.不及格”五级制成绩的功能. 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“

微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

实验环境:intel x386 一.要求:将3000H单元开始置数为00H-0FH SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3000H MOV CX, 16 AA1: MOV [SI], AL INC SI INC AL LOOP AA1 ;CX == 0? NEXT():AA1

C语言程序设计实验报告三

C程序设计实验报告 姓 名:赖瑾 实验地点:家 实验时间:2020年3月25日 实验项目:4.3.1 If语句的应用 4.3.2 switch-case的应用 4.3.3 switch-case嵌套if语句的应用 4.3.4 switch-case结构嵌套的应用 4.3.5 分析程序 计算器的实现 一.实验目的与要求 1.掌握C语言逻辑值的表示方法(0代表"假",1代表"真"). 2.学会正确地使用关系表达式和逻辑表达式. 3.掌握各种形式的if语句语法和使用方法,

C语言程序设计实验报告(三)

C程序设计实验报告 实验项目:第四章实验 4.3.1箱子形状:4.3.2优惠政策:4.3.3计算月份天数:4.3.4自动售货机:4.3.5分析程序 姓名:彭佳乐 实验地点:家 实验时间:2020年3月25日 一.实验目的与要求 1.掌握C语言逻辑值的表示方法(0代表"假",1代表"真"). 2.学会正确的使用关系表达式和逻辑表达式. 3.掌握各种形式的if语句语法和使用方法,if语句if与else的匹配关系,以及if语句的嵌套. 4.熟练掌握switch语句的语法和

c语言程序设计实验(四)

C程序设计实验报告 实验项目:实验5.3.1练习2.实验5.3.2练习2.实验5.3.4.实验5.3.5练习1&练习2&练习3.九九乘法表 姓名:龙家诚 实验地点:家 实验时间:2020年4月9日 一.实验目的与要求 1.熟练掌握while,do_while及for语句实现循环的方法 2.了解3种循环语句的区别和转换.各自的适应性.循环嵌套的使用 3.掌握如何在循环语句中使用break,continue语句,改变程序流程 4.掌握在程序设计中使用循环的方法实现各种算法 二.实验内容 1.实

C语言程序设计实验报告4

C程序设计实验报告 实验项目:5.3.1 练习2,5.3.2练习2,5.3.4, 5.3.5练习1,练习2,练习3,九九乘法表___________________________________________ 姓名:戴智琴_实验地点:家 实验时间:2020.4.12 一.实验目的与要求 1.熟练地掌握while,do-while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换,各自的适应性,循环嵌套的作用. 3.掌握如何在循环语句中使用break,continue语句,改变程序