汇编实验三--分支循环程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建农林大学东方学院信息工程类实验报告

系:计算机系专业:电子信息工程年级: 10 姓名:学号: 1050302103 实验课程:汇编语言

实验室号:_______ 实验设备号:实验时间:

指导教师签字:成绩:

实验三分支循环程序设计

1.实验目的和要求

1、学习调试程序,查找逻辑错误;

2、学习分支语句的编程和调试;

3、学习循环语句的编程和调试。

2.实验用的软硬件环境

实验的硬件环境是:

IBM—PC机及其兼容机

实验的软件环境是:

操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录

1.有10个数,统计正数的个数,存放在变量M中中。经过汇编后,形成EXE文件。在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确。(AL寄存器中存放正数的个数)

DSEG SEGMENT

MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 10

MOV AL, 0

LEA SI, MSG

L1: MOV BL, [SI]

CMP BL, 0

JBE NEXT

INC AL

NEXT: INC SI

LOOP L1

MOV M, AL

MOV AL, 0

MOV AH, 4CH

INT 21H

CSEG ENDS

END START

2.数据段中是一组无符号数,将最小数存放在M单元中。按上题方法查找一处逻辑错误。

DSEG SEGMENT

MSG DB 13, 15, 7, 25, 24

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 4

MOV AL, MSG

MOV SI, OFFSET MSG+1

L1: CMP AL, [SI]

JB NEXT

MOV AL, [SI]

NEXT: LOOP L1

MOV M, AL

MOV AL, 0

MOV AH, 4CH

INT 21H

CSEG ENDS

END START

3.编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。

4.编程:

-

=

*

=

8

1

i

i

i

B

A

Y

,Ai,Bi为字节型无符号数,分别存于

NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。4.操作方法及实验步骤

1)编辑代码,编译连接均可通过,亦能正常运行。

DSEG SEGMENT

MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 10

MOV AL, 0

LEA SI, MSG

L1: MOV BL, [SI]

CMP BL, 0

JBE NEXT

INC AL

NEXT: INC SI

LOOP L1

MOV M, AL

MOV AL, 0

MOV AH, 4CH

INT 21H

CSEG ENDS

END START

查看list文件得知M单元偏移量为000A,如图:

g命令运行后,d命令查看(d1415:000A)得知M中值为09即是正数有9个,显然是不正确的如图

2)同一编辑如下代码进行编译连接运行均正常;

DSEG SEGMENT

MSG DB 13, 15, 7, 25, 24

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 4

MOV AL, MSG

MOV SI, OFFSET MSG+1

L1: CMP AL, [SI]

JB NEXT

MOV AL, [SI]

NEXT: LOOP L1

MOV M, AL

MOV AL, 0

MOV AH, 4CH

INT 21H

CSEG ENDS

END START

由指令MSG DB 13, 15, 7, 25, 24

M DB ?

可计算0005为M的的偏移量。

如图,g命令运行后,d命令查看(d1415:0005)知M中值为0DH=13即最小的数是13,显然不正确。

相关文档
最新文档