您的当前位置:首页正文

实验二——精选推荐

2020-08-07 来源:步旅网
实验⼆

本实验思路正确但删去部分语句⽆法运⾏微机原理与接⼝技术实验报告四实验四加法及判断程序的编写与调试实验⼀、实验⽬的

1.熟练掌握编写汇编语⾔源程序的基本⽅法和基本框架。

2.学会编写顺序结构,分⽀结构和循环结构的汇编程序,掌握宏定义与宏调⽤的⽅法。3.掌握程序中数据的产⽣与输⼊输出的⽅法。⼆、实验内容

1.⽤汇编语⾔编写⼀个加法程序:1325+9839

请⽤ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显⽰输出。

2.假设有⼀组数据:5,-4,0,3,100,-51,请编写⼀程序,判断:每个数是否⼤于0?等于0?还是⼩于0?并输出其判断结果,即:即:1当X>0y=0当X=0-1 当X<0三、实验要求1.实验前准备

(1)分析题⽬,将程序中的原始数据,中间结果和最终结果的存取⽅式。(2)写出算法。(3)写出源程序。

2.本实验要求在PC机上进⾏。四、程序说明1.源程序

DA TA SEGMENTDA TA1 DB '5','2','3','1'DA TA2 DB '9','3','8','9','0'DA TA ENDS

STACK SEGMENT PARA STACKDB 64 DUP(?)STACK ENDSCODE SEGMENT

ASSUME CS:CODE,DS:DA TASTART :PUSH DSMOV AX,00HPUSH AXMOV AX,DA TAMOV DS,AXMOV ES,AXCLD

LEA SI,DA TA1LEA DI,DA TA2MOV CX,04HMOV AH,00H

LOOP1: LODS DA TA1SAHFADC AL,[DI]AAALAHFOR AL,30HSTOSBLOOP LOOP1AND AH,01HOR AH,30HMOV [DI],AHMOV AH,02HMOV CX,05HLOOP2: MOV DL,[DI]INT 21HDEC DILOOP LOOP2RETCODE ENDSEND START结果:11164

功能:计算⼗进制加法

主要指令:LEA,MOV,JMP2.源程序

DA TA SEGMENT

DA TA1 DB 5,-4,0,3,100,-51Y1 DB 'Y=0 ','$'Y2 DB 'Y=+1 ','$'Y3 DB 'Y=-1 ','$'DA TA ENDS

STACK SEGMENT PARA STACKDB 64 DUP(?)STACK ENDSCODE SEGMENT

ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,DA TAMOV DS,AXMOV AX,00HLEA BX,DA TA1MOV CX,06HLOOP: MOV AL,[BX]CMP AL,0JGE LOOP1LEA DX,Y3JMP NEXTLOOP1: JE LOOP2LEA DX,Y2JMP NEXTLOOP2: LEA DX,Y1NEXT: MOV AH,09HINT 21HINC BXLOOP LOOPMOV AH,4CHINT 21HCODE ENDSEND START结果:

功能:判断数值⼤⼩主要指令:LEA,MOV,JMP五、调试说明

本次实验程序在汇编语⾔集成环境下运⾏,需要分析逻辑,画出流程图,有点难,实验中遇到数据、地址、偏移地址之间的区别和调⽤时的不同指令,程序会出现结果不正确或者死循环。

因篇幅问题不能全部显示,请点此查看更多更全内容