微原软件实验报告

合集下载

微机原理实验报告清零程序

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。

微机原理及应用实验报告

微机原理及应用实验报告
2•深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21

微原实验报告7

微原实验报告7

微原实验报告7实验目的本实验旨在通过微原实验,了解细胞的原核和真核结构,探索细胞的功能和相互关系。

实验材料和方法实验所需材料如下:- 显微镜- 细胞标本镜片- 水溶性染色剂- 盖玻片- 显微刀实验步骤如下:1. 取一个细胞标本镜片,加入适量的水溶性染色剂,使细胞组织显色。

2. 用盖玻片将标本和染色剂封装,避免氧化。

3. 将封装好的标本放置于显微镜下,调节合适的放大倍数。

4. 使用显微刀切取细胞标本的一小块,移至显微镜下进行观察。

5. 观察细胞的结构和特点,并记录相关数据。

实验结果与分析通过显微镜观察,我们发现细胞可以分为原核细胞和真核细胞两种类型。

原核细胞是原生生物的一种,没有细胞核和细胞器。

其细胞结构简单,一般只有细胞膜、细胞质和核糖体。

真核细胞则包含有明确的细胞核和多种细胞器,这些细胞器负责不同的功能。

在观察细胞结构时,我们发现原核细胞的细胞膜相对简单,没有明显的细胞壁。

细胞质内存在核糖体,这是细胞合成蛋白质的地方。

而真核细胞的细胞膜更为复杂,通常由两层脂质组成,其中包裹着细胞质。

细胞质内部可以观察到细胞器,如线粒体、高尔基体、内质网等。

细胞核则包含着遗传物质DNA,负责细胞的遗传信息存储和传递。

通过本实验,我们进一步认识到了细胞的结构和功能之间的相互关系。

细胞结构的复杂性直接关系着细胞的功能。

例如,线粒体是细胞中能量的产生器,通过细胞呼吸产生的能量,为细胞的各种功能提供动力。

内质网则参与蛋白质的合成和物质运输等功能。

实验总结本实验通过显微镜观察细胞结构,分析了原核细胞和真核细胞的特点和功能。

通过这次实验,我们深入理解了细胞的组成和功能之间的关系。

细胞是生物体的基本组织单位,是生命存在和功能发挥的基础。

了解细胞结构与功能对于理解生物学和医学等学科具有重要的意义。

通过不断的实验探索和研究,我们可以进一步探索细胞内部的奥秘,并为科学研究和应用提供支持和依据。

四川大学微机原理实验报告

四川大学微机原理实验报告

《微机原理及接口技术实验报告》学院:电气信息学院班级: 109班老师:罗江陶学号: 1143031270姓名:实验一汇编语言程序的上机步骤一、实验目的:1、了解汇编语言程序的执行流程。

2、熟悉和使用DEBUG调试工具,分析和读懂一些及硬件相关的小程序。

3、通过对程序的分析,理解计算机程序的执行过程。

4、了解并逐步熟悉汇编语言的编辑方法及特点.5、复习8086汇编语言的段结构、常用的指令及伪指令、存储空间的分配等。

6、掌握汇编语言的编辑、汇编及连接的过程。

7、了解并逐步掌握运用DEBUG进行调试汇编语言程序二、实验内容:以文件名为1.asm源程的序为例,学习汇编语言的上机步骤。

汇编语言程序MASM软件由编辑器,汇编MASM.EXE程序,连接LINK.EXE程序以及DUEBUG.EXE调试程序四个部分组成。

汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。

1. 编辑:首先输入源程序:在记事本里录入,注意在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为XXX.asm。

2.用汇编程序MASM.Exe对源程序.ASM文件汇编,生成目标文件.OBJ:双击MASM软件中的MASM.Exe文件框,在命令行后键入源程序名XXX.asm,(如果源程序及MASM软件在同一路径下,可以只键入文件名,而不要后缀)3.连接LINK.EXE双击MASM软件中的LINK.Exe文件框,在命令行后键入目标文件名XXX.OBJ(如果源程序,目标文件及MASM软件在同一路径下,可以只键入文件名,而不要后缀)如果连接没有错误,就会产生一个XXX.EXE的可执行文件,如果.OBJ文件有错误,连接时会指出错误的原因。

4.运行和调试DEBUG.exe运行可执行文件,即双击XXX.EXE文件框即可,或在DOS下运行此程序,E:\XXX.EXE。

三、程序流程图:四、程序清单及注释:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H))NUM4 DB '34AB'NUM5 DW '34','AB'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET NUM1MOV AL,[BX]MOV BX,OFFSET NUM5MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START五、运行结果:将以上程序在笔记本中保存为xueyuan1.ASM 编译后显示编译成功:运行结果如下:运行可执行文件出现此界面后“闪退”六、实验心得:通过本次实验,我了解了一个汇编程序在计算机上的执行步骤,如何实现一个汇编程序的编辑、连接、运行。

北邮微机原理与接口技术硬件实验报告

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告班级:07118 班学号:070547班内序号:26姓名:杨帆实验一熟悉实验环境及IO的使用一,实验目的1. 通过实验了解和熟悉实验台的结构,功能及使用方法。

2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。

3. 学会Debug 的使用及编写汇编程序二,实验内容1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作,2.用汇编语言编写跑马灯程序。

(使用EDIT 编辑工具)实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。

B.通过输出端口控制灯的工作状态(低电平灯亮)三,实验步骤1.实验板的IO 端口地址为EEE0H在Debug 下,I 是读命令。

(即读输入端口的状态---拨码开关的状态)O 是写命令。

(即向端口输出数据---通过发光管来查看)进入Debug 后,读端口拨动实验台上八位拨码开关输入I 端口地址回车屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口输入O 端口地址xx (xx 表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。

2. 在Debug 环境下,用a 命令录入程序,用g 命令运行C>Debug -amov dx, 端口地址mov al,输出内容out dx, almov ah, 0bhint 21hor al, aljz 0100int 20h-g运行查看结果,修改输出内容再运行查看结果分析mov ah, 0bhint 21hor al, aljz 0100int 20h该段程序的作用3.利用EDIT 工具编写汇编写跑马灯程序程序实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。

B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm录入程序按Alt 键打开菜单进行存盘或退出编译文件C>MASM 文件名.asm连接文件C>LINK 文件名.obj运行文件或用Debug 进行调试。

微机原理实验报告-分支程序设计

微机原理实验报告-分支程序设计

实验三 分支程序设计一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

二、软硬件环境1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。

三、实验涉及的主要知识单元在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。

下面就有符号数转移指令来了解在汇编语言程序设计方法。

四、实验内容与步骤1.实验内容(1)编写计算下面函数值的程序:⎪⎩⎪⎨⎧<-=>=0,10,00,1x x x y设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的数据(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。

2.实验步骤 a.实验流程图(1)计算函数值的流程图b.编写程序(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXIT BIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXIT EQUPR: MOV Y,0;0=AL 则0=YEXIT: MOV AL,Y RET CODE ENDS END START(2)查找最大值的实验代码 DATA SEGMENT ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA B X,ARRAY MOV AL,[BX] ;ARRAY 第一个数存入BXMOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1 CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1 MOVAL,[BX];][BX AL <则][BX AX ← L1: LOOP LOP;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。

北理(bit)微机原理上机软件实验报告

北理(bit)微机原理上机软件实验报告

北理(bit)微机原理上机软件实验报告微机原理软件编程实验报告班级:学号:姓名:⼀、实验题⽬1、IDE86集成开发环境的学习和运⽤2、编写程序求出10个数中的最⼤值和最⼩值,并以单步形式观察如何求出最⼤值、最⼩值。

3、求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上。

要求实现数据显⽰,并返回DOS状态。

4、将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来。

(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)⼆、实验⽬的1、学习并掌握IDE86集成开发环境的使⽤包括编辑、编译、链接、调试与运⾏等步骤编辑:源程序的输⼊、修改。

编译:常见编译出现的语法错误的修改。

可执⾏⽂件。

运⾏:运⾏、断点设置、单步运⾏、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。

2、完成所有题⽬,提⾼编程能⼒,加深对理论课的理解。

三、实验内容1、⽂字叙述设计思路1.1编写程序求出10个数中的最⼤值和最⼩值由于⼀共有⼗个数,所以求其最⼤数或者最⼩数需要⽐较9次。

从数据段的段⾸开取数,先取两个数进⾏⽐较,⽐较完后取其中的最⼤数或者最⼩数放⼊数据段的第⼆位中。

再取第三位数与第⼆位数⽐较,如此循环,⽐较9次后在数据段最末位的就是我们需要的数。

1.2求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上求和部分:1~100⼀共有100个数,所以需要做100次加法。

做加法要有两个数,第⼀个数是第i位的数值,第⼆个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器⾥,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外⼀个寄存器每做完⼀次加法⾃加1。

显⽰部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是⼀个数,我们可以把它的每⼀位所对应的ASCII码按照⼀定的顺序存放到⼀个数据段中,再以字符串形式直接输出。

1.3将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来⽐较部分:题⽬⼀共给了我们10个数,如果要进⾏排序的话可以先把⼗个数中最⼤的数选出来,放到数据段的最后⼀个位置,接着再选出次⼤的数放到数据段的倒数第⼆位,如此循环到最后便可成功将所给的⼗个数排序好。

微程序控制器实验报告

微程序控制器实验报告

微程序控制器实验报告微程序控制器实验报告引言微程序控制器是一种常见的计算机控制器,它采用微程序的方式来实现指令的执行。

在本次实验中,我们将学习和探索微程序控制器的工作原理,并通过实验验证其功能和性能。

实验目的本次实验的主要目的是通过设计和实现一个简单的微程序控制器,来深入理解微程序控制器的工作原理和原理图设计。

实验过程1. 设计微指令集在设计微程序控制器之前,首先需要确定微指令集。

微指令集是由一系列微指令组成的,每个微指令对应一个控制信号,用于控制计算机的各个组件的操作。

在本次实验中,我们选择了常见的微指令集,包括存储器读写、算术逻辑运算、数据传输等指令。

2. 设计微指令控制存储器微指令控制存储器是微程序控制器的核心组件,用于存储微指令集。

在本次实验中,我们使用了静态随机存储器(SRAM)来实现微指令控制存储器。

通过将微指令集编码为二进制数,并将其存储在SRAM中的不同地址位置,实现对微指令的存储和读取。

3. 设计微指令解码器微指令解码器用于解析微指令,并产生相应的控制信号。

在本次实验中,我们使用了组合逻辑电路来实现微指令解码器。

通过将微指令的不同位与控制信号相连,实现对微指令的解码和控制信号的生成。

4. 设计微程序计数器微程序计数器用于控制微程序的执行顺序。

在本次实验中,我们使用了计数器和触发器来实现微程序计数器。

通过将微程序计数器的输出与微指令控制存储器的地址输入相连,实现对微指令的顺序读取。

实验结果通过实验,我们成功设计并实现了一个简单的微程序控制器。

在实验中,我们编写了微指令集,并将其存储在微指令控制存储器中。

通过微指令解码器和微程序计数器的协作,我们成功实现了对微指令的解码和执行。

实验结果表明,微程序控制器能够准确地控制计算机的各个组件的操作,并实现指令的执行。

实验总结通过本次实验,我们深入了解了微程序控制器的工作原理和原理图设计。

微程序控制器作为一种常见的计算机控制器,具有灵活性和可扩展性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法.二、预习题:若SS=2000H,SP=FFFFH, 向堆栈中压入 4 字节数据后,如何用D 命令显示压入堆栈的内容?使用debug指令“d 2000:0000”即可显示压入堆栈的内容,这是因为SP+1会溢出,变成0000。

三、源程序DATA SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP(0)Z DB 0,0DAT ENDSSTA SEGMENT STACKDW 50 DUP(?)STA ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTAR PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AL,AMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,BMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL,ZMOV AH,Z+1MUL AHADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSUB1 ENDPCOD ENDSEND STAR三、实验内容(1)用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址.图一(数据区内容以及反汇编结果)由图一可以知道:A的地址为13D9:0000,B的地址为13D9:0001(2)用U 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置, 并记录这个起始地址.由图一,可知:DATA段段基址:13D9HA的偏移地址:0000HB的偏移地址:0001HSTACK段段基址:13DAHCODE段段基址:13E1H第一条指令的偏移地址:0000H子程序SUB1入口的偏移地址:003FH(3)用T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么; 并判断结果是否正确.这是第一次调用子程序,可以看到CALL 003F后,跳转到子程序,把z的内容付给了AL,也就是MOV AL,[0005].这是第一次调用子程序返回的结果,我们可以看到当前13D9:0002以及13D9:0003处存储的内容已经变为400即A*A的结果。

上图是第二次调用子程序后返回的结果,从图中我们可以看出AX的内容已经变为625,即A*A+B*B得结果,与预计结果相吻合。

(4)在子程序SUB1 的入口处设一断点,用G 命令执行程序. 在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致.从图中可以看出,IP指针的变化说明调用了子程序SUB1,而堆栈段段基址SS和栈顶指针SP的值都没有改变。

程序返回地址一致。

(5)用E 命令修改单元A,B 的内容,重新执行程序,并记录结果.从上图可以看出,将A,B的值分别用e命令修改成1,3后,数据区的内容也做了相应的变化。

(6)用M 命令和A 命令对程序进行修改: 将主程序中最后两条指令(ADD 和ADC) 修改为一条CALL SUB1 指令,重新执行程序.反汇编发现程序最后的ADD指令在CODE段的偏移地址为0035,将此处改为调用SUB1子程序的指令,然后将0038处改为RETF。

重新执行后,程序可以正确运行。

(7) 重新使用编辑软件,把源程序最后一句中的STAR 去掉.再次生成可执行文件,并用DEBUG 调入内存.当使用U 命令时,显示的结果与前一次(未加STAR) 的结果有何不同?删掉STAR后,程序不能正常运行。

微机原理与接口技术软件实验实验报告二姓名:王佳威学院:信息与通信工程学号:08210580班级:2008211119实验二分支,循环程序设计一、实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.二、实验内容:1.安排一个数据区,内存有若干个正数,负数和零。

每类数的个数都不超过9。

2.编写一个程序统计数据区中正数,负数和零的个数。

3.将统计结果在屏幕上显示。

三、预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么?如何将十进制数0 -- 9 在屏幕上显示出来?答:0的ASCII码是30h,以后依次递增。

要屏显0-9的数码,只需将AH置成02H(DOS 功能调用),然后将要显示的数码的ASCII码存进DL里,然后执行INT 21H就可以打印字符。

或者,若这些数码是以字符串的格式存储,则可以将AH置成09H,(最后以’$’字符结束,)然后将串首地址传给DS,然后执行INT 21H就可以打印字符串。

2.如何检验一个数为正,为负或为零?你能举出多少种不同的方法?答:可以将待检验数与0比较(使用CMP指令后判断CF、OF或者以表达式【实用EQ、GE等操作符】的返回值来判断),也可以将待检验数与80H相与,判断ZF的值。

四、源程序DATA SEGMENTBUF0 DB 2BH,3AH ;'+',':'POSI DB 0BUF1 DB 0AH,0DH,30H,3AH ;LF,CR,'0',':'ZERO DB 0BUF2 DB 0AH,0DH,2DH,3AH ;LF,CR,'-',':'NEGA DB 0NUM DB 45H,23H,56H,01H,00H,00H,88H,94H,76HCNT EQU $-NUM ;LENTHDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP (?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,0MOV BX,0LOOP1: MOV AL,NUM[BX]CALL FAR PTR CMPRINC BXINC CXCMP CX,CNT ;LOOP CNT TIMESJNZ LOOP1ADD POSI,30HADD ZERO,30HADD NEGA,30HMOV AH,02HMOV CX,0MOV BX,0LOOP2: MOV DL,BUF0[BX]INT 21HINC BXINC CXCMP CX,0DH ;LOOP 13 TIMESJNZ LOOP2MOV AX,4C00HINT 21HRETSTART ENDPCMPR PROC FARCMP AL,0JGE BIGGERI NC NEGAJMP EXITBIGGER: JE EQUALINC POSIJMP EXITEQUAL: INC ZEROEXIT: RETCMPR ENDPCODE ENDSEND START五、实验结果与调试过程(图一:程序运行结果)分析:设置的数据区待分析数据为“45H,23H,56H,01H,00H,00H,88H,94H,76H”,其中正数为45H,23H,56H,01H,76H;负数为88H,94H;还有两个零。

可见程序得出的结果是正确的。

六、选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数。

源代码如下:DATA SEGMENTBUF DB 2BH,4FH,3AH ;'+','O',':'POSOD DB 0DB 0AH,0DH,2BH,45H,3AH ;LF,CR,'+','E',':'POSEV DB 0DB 0AH,0DH,30H,3AH ;LF,CR,'0',':'ZERO DB 0DB 0AH,0DH,2DH,4FH,3AH ;LF,CR,'-','O',':'NEGAOD DB 0DB 0AH,0DH,2DH,45H,3AH ;LF,CR,'-','E',':'NEGAEV DB 0NUM DB 45H,23H,56H,01H,00H,00H,88H,94H,76H;you can add other numbersCNT EQU $-NUM ;LENTHDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP (?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARPUSH DSXOR AX,AXMOV AX,DATAMOV DS,AXMOV CX,0MOV BX,0LOOP1: MOV AL,NUM[BX]CALL FAR PTR CMPRINC BXINC CXCMP CX,CNT ;LOOP CNT TIMESJNZ LOOP1ADD POSOD,30HADD POSEV,30HADD ZERO,30HADD NEGAOD,30HADD NEGAEV,30H ;TRANSFER TO ASC2 CODE MOV AH,02H ;TO PRINT CHARSMOV CX,0MOV BX,0LOOP2: MOV DL,BUF[BX]INT 21HINC BXINC CXCMP CX,1BH ;LOOP 26 TIMESJNZ LOOP2MOV AX,4C00HINT 21HRETSTART ENDPCMPR PROC FARCMP AL,0JGE BIGGERTEST AL,01HJNZ NODDINC NEGAEVJMP EXITNODD: INC NEGAODJMP EXITBIGGER: JE EQUALTEST AL,01HJNZ PODDINC POSEVJMP EXITPODD: INC POSODEQUAL: INC ZEROEXIT: RETCMPR ENDPCODE ENDSEND START运行结果:根据NUM中的数据可知这个结果是正确的。

微机原理与接口技术软件实验实验报告三姓名:王佳威学院:信息与通信工程学号:08210580班级:2008211119 实验三代码转换程序设计一.实验目的:1.掌握几种最基本的代码转换方法;2.运用子程序进行程序设计.二.实验内容:1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.三、预习题:1.如何将输入的两个字符(0 -- 9)变为十进制或二进制数?答:可以通过将字符的减去30H再乘以10D,加上个位的值(同样要将ASCII码减去30H变为十进制数)即可得两个字符的十进制数。

相关文档
最新文档