软件实验一-报告.docVIP

  • 0
  • 0
  • 约2.13千字
  • 约 2页
  • 2024-06-01 发布于辽宁
  • 举报

软件实验一:汇编编程

一、实验目的

掌握用汇编语言设计、编写、调试和运行程序的的方法。

二、实验内容

1、学生实验:分别编程实现两个16位无符号数相加,结果存放在40H41H中;两个16位的无符号数相减,结果存放在30H31H中。

相加程序思路:①输入加数高8位,加数低8位,被加数高8位,被加数低8位;

②将加数低8位和被加数低8位相加,结果存入41H;

③将加数高8位、被加数高8位和进位相加,结果存入40H。

相减程序思路:①输入减数高8位,减数低8位,被减数高8位,被减数低8位;

②将减数低8位和被减数低8位相减,结果存入31H;

③将减数高8位、被减数高8位相减,结果存入30H。

2、学生实验:编程实现

X (X≥40)

Y= 2X (20X40)

(X≤20)

实验程序如下:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

CMP40:CJNER2,#40,NEXT0;X与40比较,结果由CY读出

NEXT0:JNCBIGGER40;判断C的值,C为0时则X大于或者等于40,跳到BIGGER40

JCCMP20;判断C的值,C不为0时则X小于40,跳到CMP20

CMP20:CJNER2,#21,NEXT1;X与21比较,结果由CY读出

NEXT1:JNCBIGGER20;判断C的值,C为0时则X大于或者等于21(即X大于20),

跳到BIGGER20

JCSMALLER20;判断C的值,C不为0时则X小于20,跳到SMALLER20

BIGGER40:MOVA,R2;X=40时,将X的值赋给存放Y的值的R3

MOVR3,A

SJMP$

BIGGER20:MOVA,R2;20X40时,将X的值乘以2再赋给存放Y的R3

MOVB,#02

MULAB

MOVR3,A

SJMP$

SMALLER20:CLRA;X20时,将0赋给Y

MOVR3,A

SJMP$

3、学生实验:编写80个数相加,结果存放在30H31H中。

实验程序如下:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:MOVR2,#80;输入累加的个数N存放到R2中

MOVR0,#32H;输入参与累加数据的首个数据的地址

ADDER:MOVA,@R0;将参与累加的数据的值赋给A

ADDA,31H;将A与当前累加数的和的低位(31H)相加结果存放在A中

MOV31H,A;将求得的和数的低位放入31H中

CLRA;对A清0

ADDCA,30H;计算已得累加数高位与当前进位相加,结果存放在A中

MOV30H,A;将求得的和数的高位放入30H中

INCR0;R0中的数据加1

LOOP:DJNZR2,ADDER;循环判断

SJMP$

END

开始设置计数器和寄存器且赋初值

开始

设置计数器和寄存器且赋初值

将被加数与累加器低四位相加

将累加器清零

将进位与高四位相加

寄存器加一指向下个被加数

计数器是否为为零

结束

Y

N

三、实验总结:

遇到的问题:1、实验过程中,由于未给程序中的地址单元赋初值,导致存储单元中没有出现相加所得的结果;

2、通过Memory查看实验结果时,应该通过数据存储

文档评论(0)

1亿VIP精品文档

相关文档