微机原理实验 - 副本.docx_第1页
微机原理实验 - 副本.docx_第2页
微机原理实验 - 副本.docx_第3页
微机原理实验 - 副本.docx_第4页
微机原理实验 - 副本.docx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 基本程序编程和程序调试一、 实验目的1、 掌握数码转换等基本程序设计的技巧和方法。2、 熟悉DEBUG命令。3、 学会和掌握用DEBUG调试程序的方法。二、 实验设备PC机一台,装有DOS基本系统三、 实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。它共有19条命令完成相应的功能,命令及其格式可参阅附录一。(二)数码转换程序及其调试1、 将ASCII码表示的十进制数转换为二进制数1)程序设计的算法及其程序十进制数据可表示为:DI代表十进制数1,2,3,9,0 上式可转换为: 由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn开始乘10加次位的操作,将结果再乘10再加下一次位,如此重复,则可求出二进制数结果来。程序流程及参考程序如图1-1。这里我们规定:被转换的ASCII码十进制数存放在3500H3504H单位中。而转换结果存放在3510H3511H单元中。2)实验步骤(1)输入程序并检查无误。(2)在3500H3504H单元存入十进制数12的ASCII码,即E3500H,并输入3030303132H。(3)G=2000,运行程序,并用CTRL+C来中断程序返回监控状态。(4)用D3510来查看结果,应为:3510 0C 00(5)反复试几组数,考查程序的正确性。地址(H) 助记符 注释2000 MOV SI,3500 ;源地址2003 MOV DI,3510 ;结果地址2006 MOV BX,000A ;乘数 102009 MOV CX,0004 ;计数200C MOV AH,00 ;AH 清零200E MOV AL,SI ;取被转换数2010 SUB AL,30 ;ASCII码变十进制数2012 IMUL BX ;高位(AX)*(BX)送AX2014 ADD AL,SI+01 ;取下一位1017 SUB AL,30 ;ASCII码减30变十进制数2019 INC SI ;源地址指针+1201A LOOP 2012 ;CX-1,若CX不等于零则继续201C MOV DI,AX ;若CX不等于零则存结果201E INT 3 2 将十进制数的ASCII码转换为BCD码1)程序流程和程序设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换成BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制数的ASCII码,则对应存放结果的内容为“FF”。一字节ASCII码取其低四位即变为BCD码,程序流程图及考程序如图1-2所示。2)实验步骤(1) 输入程序并检查无误。(2) 在3500H3504H单元中存入五位十进制数的ASCII码,即E3500,并输入31,32,33,34,35。(3) G=2000,运行以上程序。(4) D350A,显示结果为:0000:350A 01 02 03 04 05 CC(5) 反复试几组数,考查程序的正确性。地址(H) 助记符 注释2000 MOV CX,0005;循环计数器赋初值2003 MOV DI,3500;ASCII码首址2006 MOV BL,FF; 错误标志送BL2008 MOV AL,DI;送ASCII码至AL200A CMP AL,3A; 比较AL与3AH200C JNB 2014; 不低于3A则转2014200E SUB AL,30; 低于3A则取ASCII码的低四位2010 JB 2014; 低于30则转20142012 MOV BL,AL; 否则AL内容送BL,取代FF2014 MOV AL,BL; 结果或错误标志送AL2016 MOV DI+0A,AL2019 INC DI201A LOOP 2006201C INT 33 将十六位二进制数转换为ASCII码表示的十进制数1)程序及其流程十六位二进制数的值域为065535,最大可转换为五位十进制数。算法:五位十进制数可表示为:Di:表示十进制数09。 因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1D4,并将它化为ASCII码。程序流程图如图1-3所示,设源数据存于35003501H单元中,结果数存于35103514H单元中。2)实验步骤(1) 输入程序并检查无误。(2) 在35003501H单元中存放0C00,运行程序并检查结果,应看到35103514H单元中的数依次为3030303132。(3) 反复试几组数,并运行程序、观察结果。地址(H) 助记符 注释2000 MOV DX,3500;取二进制数2004 MOV SI,3515; 目标首址在35102007 DEC SI2008 MOV AX,DX200A MOV DX,0000200D MOV CX,000A 2010 DIV CX; ; 除102012 XCHG AX,DX2014 ADD AL,302016 MOV SI,AL2018 CMP DX,0000201B JNE 2007201D CMP SI,3510 ; 填余下高位为02021 JZ 202A; 2023 DEC SI2024 MOV AL,302026 MOV SI,AL2028 JMP 201D202A INT 34、 十六进制数转换为ASCII码1) 程序及其流程经过CPU处理后的十六进制数存放在起始地址为3500H的内存单元中,把它们转换成ASCII码之后,再分别存入起始地址为350AH的内存单元中。 从表2-1中可知,十六进制数加30H即可得到0H9H的ASCII码,而要得到AHFH的ASCII码,则需再加7H。程序流程图及参考程序如图1-4所示。2)实验步骤(1) 输入程序并检查无误。(2) 在35003501H单元中存入四位十六进制数203B,即E3500,并输入3B,20。(3) G=2000,运行以上程序(4) D350A,显示结果为:0000:350A 42 33 30 32 CC输入数据与结果ASCII码对应顺序相反。(5) 反复试几组数。考查程序的正确性。地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV DX,DI2008 MOV AX,DX200A AND AX,000F ;取低四位值200D CMP AL,0A; ; 判是否“0”-“9”200F JB 2013 ; 是“0”-“9”转20132011 ADD AL,07; 是“A”-“F”,加72013 ADD AL,30; 转换为ASCII码2015 MOV DI+0A,AL2018 INC DI2019 PUSH CX ;保护循环计数器内容201A MOV CL,04; 移位次数送CL201C SHR DX,CL201E POP CX201F LOOP 20082021 INT 34 BCD码转换为二进制数1) 程序及其流程设四个二位十进制数的BCD码存放在起始地址为3500H,的单元中,转换出的二进制数码存入起始地址为3510H的内存单元中,程序流程图及参考程序如图1-5所示。地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV AL,DI2008 ADD AL,AL ;乘2200A MOV BL,AL200C ADD AL,AL ;乘2200E ADD AL,AL ;乘22010 ADD AL,BL ;乘102012 INC DI2013 MOV AH,002015 ADD AL,DI; BCD码十位与个位加2017 MOV DI+0F,AX;存结果 图1-5201A INC DI201B LOOP 2006201D INT 32)实验步骤(1) 输入程序并检查无误。(2) 在35003507单元中存入四个十进制数(12,34,56,78)的BCD码,即E3500 输入01,02,03,04,05,06,07,08。(3) G=2000,运行以上程序。(4) D3510,显示结果为3510 0C 00 22 00 38 00 4E 00(5) 反复试几组数,考查程序的正确性。实验二 程序设计和PC机上程序调试操作实验一、实验目的掌握常用程序设计的基本技巧和方法。学会和熟悉使用MASM汇编程序和LINK连接程序。掌握使用PC机上编程和调试程序的方法。二、实验设备PC机一台,装有DOS基本系统和MASM宏汇编软件三、实验内容及步骤(一)按要求编写程序并在DEBUG下建立、汇编和调试程序、 四字节二进制数的加法1)程序设计要求两个字的被加数存放于3500H3503H单元,加数存于3504H3507H单元(存放格式为高位存高地址单元,低位存低地址单元),两数之和(如不超过四字节)存放于3508H350BH单元。2)实验步骤()编写程序。()在DEBUG下输入程序并检查(程序可存放于2000H8000H单元)。()在3500H3507H单元中存入被加数014527和加数146758。()运行程序后,检查3508H350BH单元中内容。()反复选择几组被加数和加数,检查结果,验证程序正确性。2000 MOV SI,35002003 MOV DI,35082006 MOV AX,SI2008 ADD AX,SI+04200B MOV DI,AX200D MOV AX,SI+022010 ADC AX,SI+062013 MOV DI+2,AX2015 INT 32、数据块的搬移1)程序设计思想和要求将内存中一数据区中数据(源数据块)传送到另一数据区(目的数据块)。源数据块和目的数据块区在内存中的位置有两种情况:两区重叠和不重叠,如下图所示。对于两个数据块不重叠的情况,数据的传送可从数据块的首址开始,也可从数据块的末址开始;对于两个数据块重叠的情况,则要加以分析,否则重叠部分会因搬移而遭破坏。处理方法可以是:在源数据块首址目的数据块首址时,从数据块的首址开始传送,在数据块首址目的数据块首址时,从数据块的末址开始传送。若源数据块首址存放于SI 中,目的数据块首址存放于DI 中,块字节数存放于CX中。要求设计的程序能够实现不同情况下的数据块传送。源数源据块数据目的块数据目的数块据块)实验步骤()编写程序。()在DEBUG下键入程序并检查(程序可存放于2000H8000H单元)。()确定源数据块和目的数据块区不重叠时的首址,确定数据块个数为16个。并在源数据区送入任意个数据。()运行程序后,检查目的数据区的内容。()确定源数据块和目的数据块区重叠时, 源区首址目的区首址时的首址, 以及数据块个数为16个,并在源数据区送入任意个数据。运行程序后,检查目的数据区的内容。()确定源数据块和目的数据块区重叠时, 源区首址目的区首址时的首址, 以及数据块个数为16个,并在源数据区送入任意个数据。运行程序后,检查目的数据区的内容。2000MOVCX,00062003 MOVSI,35102007ADDSI,05200AMOVDI,3512200ECMPSI,DI2010JB20252012MOVSI,35102016ADDDI,052019CMPDI,SI201BJB2025201DMOVDI,35122021CMPDI,SI2023 JA20362025MOVSI.35102029MOVDI,3512202DMOVAL,SI202FMOVDI,AL2031INCSI2032INCDI2033LOOP202D2035INT32036ADDSI,052039ADD DI,05203CMOVAL,SI203EMOVDI,AL2040DECSI2041DECDI2042LOOP203C2044INT3(3500-350F一次存放00-0F 16个数据【3010】放si偏移地址,【3512】放di偏移地址) 上面为源数据块起址为3502,目标数据块起址为3509的情况,不重叠上面为源数据块起址为3509,目标数据块起址为3502的情况,不重叠上面为源数据块起址为3502,目标数据块起址为3505的情况,重叠且 源区首址目的区首址上面为源数据块起址为3505,目标数据块起址为3502的情况,重叠且 源区首址目的区首址3、无序数据块的递增排序)程序设计思想和要求在首址为3000H 的数据区中存放着一组无符号数, 数据的长度存于3500H单元内,要求用冒泡法对该区中的数据按递增次序排列。冒泡法的基本思想是从最后一个数(或从第一个数)开始,依次把相邻两个数比较,即第个数与第个数比较,若大则交换,否则不交换,直到个数都比较完为止。此时,其中最小数排在最前列。然后将剩下的-1个数再按前述方法进行,找到N-1个数中最小的数。以后重复进行,直到全部按序排列。)实验步骤()编写程序。()在DEBUG下键入程序并检查(程序可存放于2000H8000H单元,只要不与数据区重叠即可)。()确定数据个数并输入3500H单元中,在首址为3500H的数据区中存入任意无符号数。()运行程序并检查运行结果。()反复修改数据个数和数据区中的数,运行程序、观察结果,验证程序的正确性。DATASEGMENTARRAYDB89,67,10,1,29,100,98,45COUNTEQU8FLAGDB-1DATAENDSSTACK SEGMENTPARASTACK STACK DB 100 DUP(?)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODESORT:MOVAX,DATAMOVDS,AXMOVBX,COUNTLP1:CMPFLAG,0JEEXITDECBXMOVCX,BXMOVSI,0MOVFLAG,0LP2:MOVAL,ARRAYSICMPAL,ARRAYSI+1JBENEXTXCHGAL,ARRAYSI+1MOVARRAYSI,ALMOVFLAG,-1NEXT:ADDSI,1LOOPLP2JMPLP1EXIT:MOVAH,4CHINT21HCODEENDSENDSORT4、求数的平方根)程序设计思想和要求减奇数法是一种求取近似平方根和平方根的整数部分的方法。有公式:nS(2K-1)=N2=1若要求数S的平方根S, 则可以从S中减去奇数1、3、5直到减为零或不够减下一个奇数为止,然后统计减去的奇数个数,它就是S的近似平方根。被开方数为一个足够大的二进制数, 存于首址为4000H的单元内,它的方根存放在以4500H为首的单元内。)实验步骤()编写程序。()在DEBUG下输入程序并检查(程序可存放于2000H8000H单元,和数据存放单元不要重叠)。()在4000H为首的单元中存入一个任意大的数。()运行程序并检查运行结果。()反复修改被开方数,运行程序、观察结果,验证程序的正确性。2000MOVSI,40002003MOVDI,45002006MOVAX,00012009MOVBX,0000200CCMPSI,AX200EJZ201C2010CMPSI,AX2012JB201F2014SUBSI,AX2016INCBX2017ADDAX,0002201AJMP200C201CSUBSI,AX20IEINCBX20IFMOVDI,BX40的平方=1600 即28H的平方=0640H(二)MASM汇编程序和LINK连接程序的使用操作在DEBUG中,使用A命令建立程序,一般不能使用标号和伪指令,并不能保存汇编语言源程序,适用于简单程序。MASM宏汇编程序可以将编辑程序建立的源程序文件进行汇编,汇编后在盘上建立目标文件、列表文件和交叉参考文件。而目标文件经LINK程序连接以后成为可执行的文件,它可以在DOS下执行也可在DEBUG下调试。1、计算机钢琴程序1)实验内容根据乐曲中不同的音符是由输出不同频率的声波而产生的原理,通过设置PC机中 8253定时器不同的计数值,可由扬声器发出不同的曲调。 以下是实现PC机作为一架可弹奏的钢琴演奏预定的曲调。程序中采用了INT 21H软中断调用了DOS的常用子程序。源程序为:DATA SEGMENTMESS DB Push any key to stop!,0dH,0aH,$TABLE DW 524,588,660,698,784,880,988,1048,1176,1320,0TABLEL DB 31H,31H,32H,31H,34H,33H,3BH DB 31H,31H,32H,31H,35H,34H,3BH DB 31H,31H,38H,36H,34H,33H,32H,3BH DB 36H,36H,36H,34H,35H,34H,3BH,0AAHDATA ENDSSTACK SEGMENT PARA STACK STACKSTA DB 256 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK, ES: DATASTART PROC FAR DIV WORD PTR TABLE+BX PUSH DS MOV BX, AX XOR AX, AX MOV AL, 10110110B PUSH AX OUT 43H, AL MOV AX, DATA MOV AX, BX MOV DS, AX OUT 42H, AL MOV ES, AX MOV AL, AH MOV AH, 09H OUT 42H, AL LEA DX, MESS IN AL, 61H INT 21H OR AL, 03HKK: LEA SI, TABLEL OUT 61H, AL CALL DELAY IN AL, 61H AND AL, 0FCH OUT 61H, AL QQ: INC SISING: MOV AH, 06H JMP SING MOV DL, 0FFH FINISH: RET INT 21H START ENDP JNE FINISH MOV AL, SI DELAY PROC NEAR ; 延时子程序 CMP AL, 3BH PUSH CX JNE DDD PUSH AX CALL DELAY MOV AX, 500H ; 大循环次数 JMP QQ X1: MOV CX, 0FFFFH ; 小循环次数DDD: CMP AL, 0AAH X2: DEC CX JE KK JNZ X2 SUB AL, 31H DEC AX SHL AL, 01H JNZ X1 MOV BL, AL POP AX MOV AX, 0000H POP CX MOV DX, 12H RET MOV BH, 00H DELAY ENDP CODE ENDS END START2)实验步骤(1)利用EDIT 全屏幕编辑程序或TURBO PASCAL中的编辑功能输入以上程序,以文件名为 PLAYPIA.ASM存盘。(2)在DOS系统下执行子目录MASM中的执行文件MASM.EXE ,用宏汇编程序将PLAYPIA.ASM.汇编成目标文件PLAYPIA.OBJ。(3)运行子目录DOS下LINK执行文件将目标文件PLAYPIA.OBJ连接成为可执行的文件PLAYPIA.EXE。 (4)在DOS下直接键入由MASM宏汇编和LINK连接程序生成的可执行文件文件名PLAYPIA,运行程序观察运行结果。(6) 修改程序中延时子程序的循环次数,重新汇编、连接后运行。2、求数据块的最小值和最大值)实验内容在以BUFFER为首址的内存中存放了若干个带符号数, 其个数存放在首单元,寻找出它们最大值放到存储单元MAXVAL中, 最小值放到存储单元MINVAL中。汇编语言源程序如下: DATA SEGMENTBUFFER DB -110,22,33,-80,127,-76,0,90,-45,60,-1COUNTEQU$-BUFFERMINVAL DB ?MAXVAL DB ?DATA ENDSSTACK SEGMENTPARA STACK STACKSTA DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACKSTART PROC NEAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX LEA BX,BUFFER MOV CH,0 MOV CL,COUNT INC BX MOV AL,BX MOV MINVAL,AL MOV MAXVAL,AL INC BX DEC CXAGAIN: MOV AL,BX CMP AL,MINVAL JE NEXT JG A1 MOV MINVAL,AL JMP NEXTA1: CMP AL,MAXVAL JL NEXT MOV MAXVAL,ALNEXT: INC BX DEC CX JNE AGAIN RETFSTART ENDPCODE ENDS ENDSTART)实验步骤()用编辑程序建立源程序文件,文件名自定。()用MASM宏汇编程序和LINK连接程序将源程序文件汇编生成以EXE为扩展名的执行文件。(3)用DEBUG调试程序将由上产生的EXE可执行文件送入内存,先用反汇编命令检查程序内容和首末地址,然后检查以BUFFER为首址的存储单元中数据块和MINVAL、MAXVAL单元的内容。BUFFER 地址单元的段地址和偏移地址是由系统在汇编和连接时指定的。各个不同的系统都不一样,一般来说,偏移地址为零,段地址可在反汇编程序时,根据指令MOV AX, DATA 对应机器码中DATA的值来确定。(4)在DEBUG下运行程序,检查运行结果。(5)修改源程序中BUFFER数据区的各数据,重新汇编后再运行,检查结果。3、从无序数列中删除一个元素1)实验内容在BUFFER为首址的内存区中存放了一个无序字符串,其长度存放在第一个字节单元,在KEY单元内存放了要删除的一个字符,查找此无序字串,若找到则删除并作相应调整,若字串中无此字符则在FLAG单元内置FFH标志。其程序流程图如下。2)实验步骤()按以上框图编写程序,并任意设定字符个数和字符串。()输入汇编语言源程序,文件名自定。()用MASM和LINK程序汇编和连接生成EXE执行程序。(4)运行该程序,并检查结果。(5)修改字符串及其个数,再运行程序,验证程序的正确性。 设地址指针, 取串长度CX KEY内容AL 搜索字串 找到否? N Y CX1 串搜索 N 完否? 以要删除的数据的地址 为目的地址,下一个数Y 据的地址为源地址,以 置 剩下的数据个数为传送FLAG单元 次数进行传送 返回DATASEGMENTBUFFERDB0CH,REWYIUGBGOZXKEYDBGFLAGDB00HDATAENDSSTACK SEGMENTPARASTACK STACK DB 100 DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACKSTART PROC NEAR PUSH DS MOV AX,0000H PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AXLEA DI,BUFFERMOVCH,00HMOVCL,BYTE PTRDIINCDIMOVAL,KEYCLDREPNESCASBJZFOUNDMOVFLAG,0FFHJMPEXITFOUND:PUSHDIPOPSIDECDICLDREPMOVSBEXIT:RETSTARTENDPCODEENDSENDSTARTkey=G实验三 DOS系统功能调用及模块化程序设计一、实验目的1、 熟悉DOS系统中基本功能子程序的作用及其调用方法。2、 结合DOS系统中键盘和显示功能子程序的调用和汇编语言源程序结构设计有关程序。3、 掌握复杂程序的设计思想模块化程序设计的方法。二、实验设备PC机一台,装有DOS基本系统和MASM宏汇编软件。三、实验内容及步骤(一)DOS键盘、显示基本功能子程序调用DOS提供了许多系统功能子程序可由程序设计者调用,其中最基本的是键盘和显示操作功能的调用,具体调用的方法可参阅教科书。1、 显示缓冲区的字符串 1)实验程序:DSEGSEGMENTSTRINGDBWelcome to DONG HUA University!,0dH,0aH,$DSEGENDSSTACK SEGMENTPARA STACK STACKDB256DUP (?)STACKENDSCSEGSEGMENTMAINPROCFARASSUME CS: CSEG, DS: DSEG SS: STACKSTART:PUSHDSMOVAX,0PUSHAXMOVAH,9MOVDX,SEG STRINGMOVDS, DXMOVDX,OFFSET STRINGINT21HRETMAINENDPCSEGENDSENDSTART2) 实验步骤: (1)建立源程序文件。(2)用MASM宏汇编程序和LINK连接程序生成执行程序。(3)运行执行程序,输入不同字母,观察结果。2、键盘输入小写字母,显示器显示大写字母 1)实验程序: CSEGSEGMENTASSUMECS:CSEGMAIN PROCFARSTART:PUSHDSMOV AX,0PUSHAXBEGIN:MOVAH,1INT21HCMPAL,aJBSTOPCMPAL,zJASTOPSUBAL,20HMOVDL,ALMOVAH,2INT21HJMP BEGINSTOP:RETMAINENDPCSEGENDSENDSTART 2) 实验步骤: (1)建立源程序文件。(2)用MASM宏汇编程序和LINK连接程序生成执行程序。(3)运行执行程序,输入不同字母,观察结果。3、从键盘输入一个二位十进制的月份数(01-12),显示相应月份的英文缩写名1)程序及其结构 程序采用子程序的结构形式,子程序有:将输入的二位月份数转换为二进制数的子程序;从字符表中查找相应的英文缩写的子程序;将月份的英文字母显示在屏幕上的子程序。程序如下:DATASGSEGMENTPARADATATHREEDB3MONINDB3,4 DUP(?)ALFMONDB ?,$MONTABDBJAN,FEB,MAR,APR,MAY,JUNDBJUL,AUG,SEP,OCT,NOV,DECDATASGENDSSTACK SEGMENTPARA STACK STACKSTA DB 100 DUP(?)STACK ENDSCODESGSEGMENTPARACODEASSUMECS:CODESG,DS:DATASG,ES:STACKMAINPROCFARPUSHDSSUBAX,AXPUSHAX MOVAX,DATASGMOVDS,AXMOVES,AXCALLINPUTCALLLOCATECALLDISPLAYRETMAINENDPINPUTPROCNEAR; 键盘输入并将ASC码转换二进制数的子程序PUSHDXMOVAH,0AH; 键盘输入月份数LEADX,MONININT21HMOVAH,MONIN+2 ; 将月份数字的ASC码取入AH和ALMOVAL,MONIN+3XORAX,3030H; 将ASC码转换为BCD码CMPAH,00JZRETURNSUBAH,AHADDAL,10RETURN:POPDXRETINPUTENDPLOCATEPROCNEAR;将月份数字转换为英文缩写字母的子程序PUSHSIPUSHDIPUSHCXLEASI,MONTABDECALMULTHREEADDSI,AXMOVCX,03CLDLEADI,ALFMONREPMOVSBPOPCXPOPDIPOPSIRETLOCATEENDPDISPLAYPROCNEAR;屏幕显示子程序PUSHDXLEADX,ALFMONMOVAH,09INT21HPOPDXRETDISPLAYENDPCODESGENDSENDMAIN(二)采用DOS功能调用设计源程序,并运行调试程序1、十进制加法和结果显示程序(自行设计)1)程序设计要求将数据段DSEG中的ADDOP1定义的双字变量的4位十进制数和附加段ESEG中的ADDOP2定义的双字变量的4位十进制数相加,和存放于数据段DSEG中的SUM中,采用DOS显示功能调用将和显示在屏幕上。2) 实验步骤: (1)建立源程序文件。(2)用MASM宏汇编程序和LINK连接程序生成执行程序。(3)运行执行程序,输入不同的加数和被加数,观察结果。DSEGSEGMENTADDOP1DD1994SUMDD?DSEGENDSESEGSEGMENTADDOP2DD0403ESEGENDSSTACK SEGMENTPARASTACK STACK DB 100 DUP(?)STACKENDSCODESEGMENTASSUMEDS:DSEG,CS:CODE,ES:ESEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,ESEGMOVES,AXMOVAX,WORDPTRADDOP1ADDAX,WORD PTRADDOP2MOVWORD PTR SUM,AXMOVAX,WORD PTR ADDOP1+2ADCAX,WORD PTR ADDOP2+2MOVWORD PTR SUM+2,AXMOVBX,WORD PTRSUM+2CALL DISPLAYMOVBX,WORD PTRSUMCALLDISPLAYMOVAH,4CHINT 21Hdisplay proc nearmov cx,10000d call dec_divmov cx,1000d call dec_divmov cx,100d call dec_divmov cx,10d call dec_divmov cx,1d call dec_divret dec_div proc near mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al add dl,30h mov ah,2h int 21h ret dec_div endpdisplay endpCODE ENDSEND START2、十进制加法和算式显示程序(自行设计)1)程序设计要求在以上十进制数加法要求的基础上,将加法算式及和在显示器上显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论