分支循环程序设计及实现

举报
Qgtdre 发表于 2019/02/01 17:19:15 2019/02/01
【摘要】 分支循环程序设计及实现

一.实验目的

1.学习分支程序、循环结构程序的设计和调 试方法;

2.掌握分支、循环等程序的基本结构。

3.通过循环指令、条件转移指令等完成较复杂程序的设计。

二.实验内容

1.数据串搬家程序:BUF1开始的8个以字为单位的数据搬移到BUF2开始的缓冲区中。

1.实验原理:使用MOV指令实现数据的传输,使用循环指令将数据实现多个数据的传输。

2)试验程序

 

DATA SEGMENT

  BUF1 DW 1H,2H,3H,4H,5H,6H,7H,8H

  BUF2 DW 8 DUP(?)

  COUNT EQU 8

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

      MOV DS,AX

      MOV CX,COUNT

      LEA SI,BUF1

      LEA DI,BUF2

AGIN:MOV AX,[SI]

     ADD SI,2

     MOV [DI],AX

     ADD DI,2

     LOOP AGIN

     MOVAH,4CH

     INT 21H

CODE ENDS

END START

(3)调试结果及说明

无标题1.jpg

实验说明:在内存的BUF1中存有以字为单元的数据01H,02H,03H,04H,05H,06H,07H,08H

BUF1的起始地址为DS;0100BUF2的起始地址为DS;0110,从运行的结果可以看出,运行过后,BUF2的数据与BUF1的相同,说明实现了数据搬移。

2..BUF1开始的8个以字为单位的数据中的正数、负数分别搬移到BUF2BUF3开始的缓冲区中。

(1).实验原理:

使用条件转移指令实现将正数和负数的分别搬移,使用循环指令实现所有数据的搬移。 

(2).试验程序

DATA SEGMENT

  BUF1 DW 3,-1,2,-5,4,-6,7,9

  BUF2 DW 8 DUP(?)

  BUF3 DW 8 DUP(?)

  COUNT EQU 8

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

      MOV DS,AX

      MOV CX,COUNT

      LEA SI,BUF1

      LEA DI,BUF2

      MOV BX,OFFSET BUF3

AGIN:MOV AX,[SI]

     ADD SI,2

     CMP AX,0

     JG  NEXT1

     MOV [BX],AX

     ADD BX,2

     LOOP AGIN

 NEXT1: MOV [DI],AX

     ADD DI,2

     LOOP AGIN

     MOV AH,4CH

     INT 21H

CODE ENDS

END START   

(3).调试结果及说明

 

无标题2.jpg

实验说明:BUF1的起始地址为DS:0100,BUF2的起始地址为DS;0110BUF3的起始地址为DS;0120。数据在内存中以补码的形式存储,BUF1中的原始数据为:3,-1,2,-5,4,-6,7,9 ,对应的补码形式为:0003FFFF,0002,FFFB,0004,FFFA,0007,0009BUF2中存正数据,运行结果为BUF2中的内容为0003,0002,0004,0007,0009BUF3中的内容为FFFF,FFFB,FFFA.


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。