微型计算机循环结构程序,微机原理(循环程序设计)..doc

微机原理(循环程序设计).

洛阳理工学院实验报告

系别计算机班级B100505学号姓名张勋课程名称微机原理与接口技术实验日期4.23实验名称循环程序设计成绩实验目的:1、加深对循环结构的理解;

2、掌握循环程序的设计方法;

3、学会用DEBUG调试程序。实验条件:1、计算机一台

2、MASM for Windows 或者 MASM5.0以上编译环境实验内容:

一、 试验题目:

1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

2.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

二、 试验程序:

1.汇编程序如下:

DATA SEGMENT

BUF DW -2,3,14,-4,8,-2,11,25

BUF1 DW 8 DUP(0)

BUF2 DW 8 DUP(0)

A DW ?

B DW ?

DATA ENDS

STACK SEGMENT PARA STACK 'STACK'

DB 200 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA, ES: DATA, SS: STACK

START:MOV AX,DATA

MOV DS,AX

MOV ES,AX

XOR DX,DX

MOV CX,8

MOV DI,OFFSET BUF

MOV SI,OFFSET BUF1

MOV BX,OFFSET BUF2

BEGIN:MOV AX,[DI]

CMP AX,0000H

JGE F1

MOV [BX],AX

INC BX

INC BX

JMP F2

F1:MOV [SI],AX

INC DL

INC SI

INC SI

F2:INC DI

INC DI

LOOP BEGIN

MOV DI,OFFSET A

MOV SI,OFFSET B

MOV [DI],DL

MOV DH,8

SUB DH,DL

MOV [SI],DH

MOV AH,4CH

INT 21H

CODEENDS

END START

已知有5个正数,3个负数,则DH、DL分别为03和05,运行程序结束后,查询这两个区域,运行结果如图:

2.汇编程序如下:

DATA SEGMENT

COUNT DB ?

TOTAL DB ?

DATA ENDS

STACK SEGMENT PARA STACK 'STACK'

DB 200 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA,ES:DATA, SS: STACK

START:MOV AX,DATA

MOV DS,AX

MOV DI,OFFSET COUNT

MOV SI,OFFSET TOTAL

XOR DX,DX

XOR AX,AX

BEGIN:INC DX

ADD AX,DX

CMP AX,55

JBE BEGIN

MOV [SI],AX

MOV [DI],DX

MOV AH,4CH

INT 21H

CODE ENDS

END START

用AX来存放TOTOL,DX存COUNT,运行结果如图:

实验总结:

通过本次实验,对循环结构程序设计能熟练掌握并且应用,同时弥补了一些没有注意到的细节,比如取某段数据首地址,偏移量等语句的使用,通过练习操作,相信会对及汇编的学习大有帮助

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1) 根据下述情况,分别编写程序,记录 BX 中 1 的个数(需要考虑 BX 中二进制 串的特殊情况),要求如下:  循环次数已知  循环次数未知 (2) 按照下列要求,编写相应程序段。 1) 起始地址为 string 的主存单元中存放一个字符串(长度大于 6),把 该字符串中的第 1 个和第 6 个字符(字节量)传送给 DX 寄存器; 2) 从主存 buffer 开始的 4 字节中保存了 4 个非压缩 BCD 码,现按低(高) 地址对低(高)位的原则,将他们合并到 DX 中。 3) 假设从 B800H:0 开始存放有 100 个 16 位无符号数,编程求它们的和, 并存在 DX.AX 中 4) 一个 100 字节元素的数组首地址为 array,将每个元素减 1(不考虑 溢出)。 (3) 把内存中从 PACKED 开始的 10 个字节单元中的 16 位压缩 BCD 数转换成非压 缩 BCD 数,并把结果存放在 UNPACKED 开始的 20 个字节单元中;将下列代 码补充完整,并且自己定义 PACKED 中的数据,将 UNPACKED 中的结果展示 出来。 MOV DX, _____ MOV CL, ______ MOV SI, 0 MOV DI, ___ CONVERT: MOV AL, [SI+PACKED] MOV AH, AL AND AL, 0FH __________ MOV [DI+UNPACKED], ____ 汇编语言实验(五) ADD DI, ____ ______ DEC DX JNZ CONVERT (4) 给定一个有序数组(均小于 FFH 例如 02H, 07H, 0BH, 0FH, 13H, 1CH, 24H, 39H, 40H, 57H, 68H)和一个目标值(例如 79H),请判断数组中是否含有两个数的 和为目标值,请设计一个算法,将时间复杂度控制在 O(n),编程实现并验证 你的算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值