微机原理作业

发布 2022-09-04 20:35:28 阅读 2284

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

作业组别:第十一组。

班级:10级机控一班。

姓名:孙策。

学号:100107010140

作业指导教师:李艳文

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

目录。第一题 1

一、题目分析: 1

二、寄存器及主存应用说明: 1

三、程序框图: 1

四、详细程序: 1

五、程序调试情况: 2

第二题 2一、题目分析: 3

二、寄存器及主存应用说明: 3

三、程序框图: 3

四、详细程序: 4

五、程序调试情况: 5

第三题 6一、题目分析: 6

二、寄存器及主存应用说明: 6

三、程序框图: 7

四、详细程序: 8

五、程序调试情况: 9

心得体会 10

44、内存有一个数x,把此数的前四位变0,后四位维持不变,送回同一单元。

令x=62h, 然后将x的偏移地址放入si,再把x与0fh相与,最后把结果送回偏移地址为si的地方。预期结果为x=02h 存放在原来的位置。

应用段寄存器ss、ds、cs通用寄存器ax、si

.model small

stackdata

x db 62h在数据段中定义一个字节型变量x

code start: mov ax,@data

mov ds,ax设置ds指向程序数据段的段地址。

mov si,offset x ;获取x的偏移地址存放在si中。

and byte ptr[si],0fh ;将x的前四位清零后四位不变。

mov ax,4c00h

int 21h程序结束点,返回dos

end start

程序开始前:

程序结束后:

程序开始前x=62h,程序结束后x=02h,与预期结果相同。

12、 假设在内存buf为首地址的数据区中,有50个字节的无符号数,编一程序能够找出数据块中的最大者,并把它送至max单元中。

首先在数据段定义以buf为首地址的50个字节无符号数,然后取第一个放在ax中与第二个相比较。如果大于第二个,则用第一个和第三个相比较,否则,把第二个数放在ax中再与第三个数相比较。以此类推,最后把ax中的数值放在max中。

预期结果, max=50=32h

应用段寄存器ss、ds、cs通用寄存器ax、cx、si

model small

stackdata

buf db 50, 1, 2, 3, 4, 5, 6,7,8,9,10;定义一个数组存放50个。

db 21,22,23,24,25,26,27,26,29,30;字节无符号数,其中第。

db 31,32,33,34,35,36,37,38,39,40;一个数据表示元素个数。

db 41,42,43,44,45,46,47,48,49,50

max db定义变量max存放最大值。

codestart: mov ax ,@data

mov ds,ax设置ds指向程序数据段的段地址

lea si,buf取buf的偏移地址。

mov cx,[si取得元素个数。

xor ch, ch将cx高位清零。

dec cx得到循环次数。

mov al,[si+1] ;取出第一个元素给al,al用于暂存最大值。

again: cmp al,[si+2与下一个数据比较。

ja next

mov al ,[si+2al取得更大的数据。

next: inc si将偏移地址加1

loop again循环控制。

mov max,al将最大值放在max中。

mov ax,4c00h

int 21h程序结束点,返回dos

end start

程序开始前:

程序结束后:

由上图可知程序结束后变量max=32h=50与预期结果相同。

81、编写子程序。用给定的字节(在al中)填充一指定的内存区域。该内存区域的起始地址位于di中,需填充的内存单元个数位于cx中。主程序调用子程序实现上述功能。

定义x=80用来当做给定的字节,定义buf为要填充的10个字节的内存区域。将buf的的偏移地址放在di中,需要填充的内存单元个数放在cx中。通过主程序调用子程序来实现将80填充到buf为首地址的10个字节的内存区域。

预期结果将在buf为首地址的10个字节内存区域出现10个50h。

应用段寄存器ss、cs、ds通用寄存器ax、cx、di

.model small

stackdata

x db 80指定字节变量用于填充指定的内存字节区域。

buf db 10 dup(?)指定内存区域。

count equ $-buf ;取指定内存字节单元个数。

code start: mov ax,@data

mov ds,ax ;设置ds指向程序数据段的段地址。

mov al,x

lea di,buf ;获取buf的偏移地址。

mov cx,count ;获取循环次数。

call htoasc ;调用子程序。

mov ax,4c00h ;程序结束点,返回dos

int 21h

htoasc proc过程定义,过程名为htoasc

push ax ;顺序入栈,保护寄存器中的内容。

push cx

push di

again: mov [di],al ;将al中的数据放到偏移地址为di的存储单元中。

inc didi加1

loop again ;循环控制。

pop di

pop cx

pop ax恢复被改变的寄存器内容。

ret子程序返回。

htoasc endp过程结束。

end start

程序开始前:

程序结束后:

由上图可知,程序开始前,以buf为首地址的10个字节单元中的内容都为00h, 程序结束后,以buf为首地址的10个字节单元的内容都为50h与预期结果相同。

通过对这几道小题的编程,我深刻的感觉到“麻雀虽小,五脏俱全”的含义,由一开始的题目分析,到后来的程序框图、程序调试,每一步都很重要,都不能掉以轻心,特别是程序调试的时候,丢掉一个逗号都可以导致你的程序不能运行。经过这次编程,我感受到理论联系实际的重要性,平常在课本上学的东西貌似很熟,但是到啦真正使用的时候却模模糊糊,这就要求我们多动手,多思考,尽可能把学到的东西运用到生活中去,多与实际联系起来。

微机原理作业

微型计算机原理及应用 作业。作业组别 十八。班级 机电一班姓名 学号 作业指导教师 任课教师 实验室教师 作业完成时间 2013年4月17日。目录。1题目一31 1题目分析31.2寄存器的应用说明31.3程序框图31.4详细程序41.5程序调试的情况42题目二42.1题目分析52.2寄存器及主存等的...

微机原理作业

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

微机原理作业

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