微机原理作业

发布 2022-09-04 20:32:28 阅读 3760

《微型计算机原理及应用》作业。

作业组别:十八。

班级:机电一班姓名:学号:

作业指导教师:(任课教师、实验室教师)

作业完成时间:2023年4月17日。

目录。1题目一31.1题目分析31.2寄存器的应用说明31.

3程序框图31.4详细程序41.5程序调试的情况42题目二42.

1题目分析52.2寄存器及主存等的应用说明52.3程序框图52.

4详细程序52.5程序调试的情况63题目三63.1题目分析63.

2寄存器及主存等的应用说明63.3程序框图73.4详细程序73.

5程序调试的情况94体会和建议9

1题目一。编写一个过程,完成统计dx中“1”的个数,并将结果送cx中。1.1题目分析。

为了统计dx中1的个数,应该分别检查dx的每一位是否为1。利用逻辑左移指令,每次将dx逻辑左移一位,其最高位进入cf,最低位补零;然后巧妙地运用带进位加指令adc,“adccx,0”语句实现cx=cx+cf,即:如果逻辑左移进入cf的最高位为1,则cx加1,为0则cx加0;然后不断进行循环。

同时应注意每次移位前应测试dx是否为零,如果为零,说明dx中已经无1,程序结束。1.2寄存器的应用说明cx存放dx中1的个数1.

3程序框图。

开始。为dx赋值,cx清零。

检测dx是否为零。

不为0dx逻辑左移1位。

cf为1,cx加1;cf为0,cx加0;

为01.4详细程序。

结束。model

num dw 1010101000000000b ;定义一个字变量。code

start: mov ax,@data

mov ds,axmov dx,num

xor cx,cxcx清零,用于存放dx中1的个数。

again:test dx,0ffffh ;测试dx

jz donezf=0,跳转到done

shl dx,1zf不为零,逻辑左移一位adc cx,0cx=cx+0+cf

jmp again跳回again进行循环done:mov ax ,4c00h

int 21hend start1.5程序调试的情况。

可以正确统计出dx中1的个数,例如当dx为1010101000000000b时cx=4

2题目二。编一个程序,使放在data及data+1单元的两个八位带符号数相乘,乘积放在data+2及data+3单元中(高位在后)。

2.1题目分析。

因为为有符号数相乘,所以应该用imul指令,其计算结果在ax中,为了使乘积放在data+2及data+3单元中(高位在后),应分别将al ,ah中的数传送给data+2,data+3。

2.2寄存器及主存等的应用说明。

data ,data+1中存放要相乘的数,乘积暂时放在ax中,data+2中存放乘积的低位,data+3中存放乘积的高位。2.3程序框图。

2.4详细程序。model

开始。设定data,data+1中的值,并预留出data+2,data+3两个字节空间。

将data,data+1中的数相乘。

低位存入data+2高位存入data+3

结束。data db 0a5h,64h,?,code

start : mov ax ,@datamov ds,ax

mov al,data ;将存放在data中的数赋给alimul data+1 ;ax=al*data+1

mov data+2,al ;乘积的低位存放在data+2中mov data+3,ah ;乘积的高位存放在data+3中mov ax,4c00hint 21h

end start

2.5程序调试的情况。

可以正确的进行运算,data=0a5h data+1=64h data+2=74h data+3=dch

3题目三。编写子程序。求内存中一无符号字节型数据序列的和。

该无符号字节型数据序列的起始地址位于bx中,数据个数位于cx中。要求求得的和存放于ax中,且置cf为0;但若其和超过ax的存放范围,或数据个数为0等情况,则置cf为0,ax不变。主程序调用子程序实现上述功能。

3.1题目分析。

子程序的入口参数利用堆栈传递,主程序需要压入数据个数和数据缓冲区的偏移地址,子程序通过bp寄存器从堆栈段相应位置取出参数,子程序的出口参数利用ax传递。3.2寄存器及主存等的应用说明。

cx存放数据个数,bx存放数据序列的起始地址,ax存放求得的和。

3.3程序框图。

开始。主程序:压入数据个数和数据缓冲区的偏移地址。

子程序:取出数据个数放于cx中,取出数据缓冲区的偏移地址存放于bx中,并求和存放于si中。

cx不为0,cf不为1

求得的和存放于ax中。

cx=0或cf=1

令cf=0ax不变。

结束。3.4详细程序。

model

num dw存放数据和array db 11h,22h,33h

count equ $-arrayarray中数据个数。code

start: mov ax,@data

mov ds,ax

mov dx,count

push dx压入数据个数mov dx,offset array

push dx压入偏移地址call total调入子程序求和add sp ,4平衡堆栈mov num ,ax ;保存出口参数mov ax ,4c00hint 21h

total procpush bpmov bp,sp

push bxpush cxpush si

mov bx ,[bp+4] ;mov cx ,[bp+6] ;xor si,sisicmp cx,0jz total2 ;total1: mov dl,[bx]

mov dh,0add si,dxjc total2inc bxloop total1mov ax,sijmp total3total2: clc

total3: pop si

pop cxpop bxpop bprettotal endpend start

计算无符号数和子程序。

入口参数:超出存放范围,cf=1,跳转到total2指向下一个数据循环。

讲求得的和存放于ax中跳转到total3令cf=0

3.5程序调试的情况。

可以实现题目要求:例如,当内存中的无符号数为11h,22h,33h时,所得的结果为ax=66h

4体会和建议。

通过做作业,收获还是很大的,首先,熟悉了汇编软件的界面,掌握了其用法;其次,作业题虽然和书上的例题有相似的算法构造,但通过作业使我对书上的例题有了更深刻的理解,对一些细节知识有了更清楚的认识。再次,通过此次作业我还更清楚地体会到做事一定要认真细心,小小的错误也会使我们的不到预期的结果,而且动手之前一定要先构思好,把思路整理清楚,这样能达到事半功倍的效果。

建议,应加强实验室的管理,电脑应进行定期维护并安装杀毒软件。

微机原理作业

微型计算机原理及应用 作业。作业组别 第30组。班级 12级轧钢二班。姓名 贾闯 学号 120101020023 指导教师 李艳文 完成时间 2015年 05 月。一 题目及题目分析描述及要求。题目 内存中source处存放着10个字节型数据,请记录每个字节数据中二进制位1的个数,并按照数据字节在前...

微机原理作业

微型计算机原理及应用 作业。作业组别 第十一组。班级 10级机控一班。姓名 孙策。学号 100107010140 作业指导教师 李艳文 作业完成时间 2013年4月9日。目录。第一题 1 一 题目分析 1 二 寄存器及主存应用说明 1 三 程序框图 1 四 详细程序 1 五 程序调试情况 2 第二题...

微机原理作业

微机原理实验报告。求平方和 平方根的和。专业自动化 班级自0801 学生姓名黄礼浩 学号 200881223 2010 年 11 月 30日。1 题目。求平方 平方和 平方根的和。利用公式 1 3 4 从上面的公式可以看出,自然奇数的和,是几个自然奇数个数的平方,本题是先求平方数,在求平方和,最后求...