微机原理与接口技术 软件实验报告.doc_第1页
微机原理与接口技术 软件实验报告.doc_第2页
微机原理与接口技术 软件实验报告.doc_第3页
微机原理与接口技术 软件实验报告.doc_第4页
微机原理与接口技术 软件实验报告.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

实验一 DEBUG 的使用 一、实验目的 1.掌握汇编程序的编辑,编译,连接和执行的全过程; 2.学习和掌握用 DEBUG 调试程序的方法。 二、实验任务及内容 1.用编辑软件,输入以下汇编语言源程序: DAT SEGMENT A DB 20 ;(自定) B DB 15 ;(自定) Y DB 3 DUP(0) Z DB 0,0 DAT ENDS STA SEGMENT STACK DW 50 DUP(?) STA ENDS COD SEGMENT ASSUME CS:COD,DS:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AL,A MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,B MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,A MOV Z,AL MOV AL,B MOV Z+1,AL CALL SUB1 ADD WORD PTR Y,AX ADC BYTE PTRY+2,0 RET STAR ENDP SUB1 PROC MOV AL,Z MOV AH,Z+1 MUL AH ADD WORD PTR Y,AX ADC BYTE PTRY+2,0 RET SUB1 ENDP COD ENDS END STAR2.通过编译,连接形成可执行文件; 3.用 DEBUG 将可执行文件调入,并进行调试; (1)用 D 命令观察数据区在内存中的具体内容,记录单元 A 和 B 的具体地址; (2)用 U 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置, 并记录这个起始地址; (3)用 T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是 否正确; (4)在子程序 SUB1 的入口处设一断点,用 G 命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致; (5)用 E 命令修改单元 A,B 的内容,重新执行程序,并记录结果; (6)用 M 命令和 A 命令对程序进行修改: 将主程序中最后两条指令 (ADD 和 ADC) 修改为一条 CALL SUB1 指令,重新执行程序; (7)退出 DEBUG; 4.重新使用编辑软件,把源程序最后一句中的 STAR 去掉.再次生成可执行文件,并用 DEBUG 调入内存.当使用 U 命令时,显示的结果与前一次(未加 STAR) 的结果有何不同? 三、 程序流程图开始调用SUB1子程序并返回保存现场DS段初始化赋值:Z = 20 Z+1 = 20调用SUB1子程序并返回赋值:Z =15 Z+1 = 15调用SUB1子程序并返回赋值:Z =20 Z+1 = 15结束AX与Y带进位相加四、源程序见实验任务及内容五、程序运行结果(1)U 命令对目标代码反汇编, 注意发现源程序的起始位置, 并记录这个起始地址。答:源程序起始地址:1512:0000H。(2) D 命令观察数据区在内存中的具体内容,记录单元 A 和 B 的具体地址。答:150A:0000H 是A的具体地址,150A:0001H 是B的具体地址。(3) T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致。得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确。答:由于单步调试的结果较多,在这里仅说几项以示情况。 PUSH AX 后观察得到IP值自加2。 MOV DS,AX 后DS 的值由14FAH变成150AH。 Z的偏移地址为0005H,而寻址Z中的内容成为0005H。所以结果一致正确。(4) 在子程序 SUB1 的入口处设一断点,用 G 命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致。 答:SS = 150BH,IP = 0017H,和程序返回地址一致。(5)用 E 命令修改单元 A,B 的内容,重新执行程序,并记录结果。(6) 用 M 命令和 A 命令对程序进行修改: 将主程序中最后两条指令 (ADD 和 ADC) 修改为一条 CALL SUB1 指令,重新执行程序。(6) 重新使用编辑软件,把源程序最后一句中的 STAR 去掉.再次生成可执行文件, 并用 DEBUG 调入内存.当使用 U 命令时,显示的结果与前一次(未加 STAR) 的结果有何不同?答:整个代码段仅有一条指令,ADD BX+SI,AL。由于把源程序最后一句中的 STAR 去掉,那么程序就不一定是从STAR开始,会造成程序混乱。(结果抓图见下页)六、预习题1.熟悉常用的 DEBUG 命令。u 地址 反汇编 d xx:偏移地址 xx:cs ds ss es 查看内存单元的内容 t=开始地址 结束地址 跟踪执行 p 跳过子程序单步运行 g=开始地址 断点地址 执行到断点处 g 全速运行 r 查看寄存器内容 r xx xx:寄存器名称,修改寄存器内容 e xx:偏移地址 xx:cs ds ss es 修改内存单元的内容 a 偏移地址 汇编,录入程序或可修改语句 2.阅读并分析程序的功能。(见程序流程图) 3.若 SS=2000H,SP=FFFFH, 向堆栈中压入 4 字节数据后,如何用 D 命令显示压入堆栈的内容?答:D 2000:FFFCH。七、实验总结、建议要求、心得体会初步掌握了汇编程序的编辑、编译、连接和执行的全过程,学习了用 DEBUG 调试程序的方法,了解了另一种程序语言的编写。感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作的。实验二 分支及循环程序设计 一、 实验目的 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的 DOS 功能调用。 二、实验任务及内容 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过 9; 2.编写一个程序统计数据区中正数,负数和零的个数; 3.将统计结果在屏幕上显示。三、程序流程图YNYN开始数据、循环初始化CX = N数据段DS、堆栈段SS初始化CX = 0比较AX 等于、大于或者小于 0循环初始化CX = 3显示展示Z、A、B的句子及各自的值CX = 0返回DOS系统结束四、实验源程序DAT SEGMENTZDW0 ;数据中0的个数ADW0 ;数据中大于0的个数BDW0 ;数据中小于0的个数NUMDW9,0,6,-4,-1,-5,5,-9,-8,-1,9 ;一组数据NDW($-NUM)/2 ;该组数据的个数TYPE0 DB The result is :, 0DH, 0AH, Number of zeros : $ ;显示一句话,展示0的个数TYPE1DB0DH, 0AH, Numbers above 0 : $ ;显示一句话,展示大于0的个数TYPE2DB0DH, 0AH, Numbers below 0 : $ ;显示一句话,展示小于0的个数EVENLOCATEDWTYPE0, TYPE1, TYPE2DAT ENDSSTA SEGMENT STACKDW128 DUP(?)STA ENDSCOD SEGMENTASSUMEDS:DAT,SS:STA,CS:CODSTAR:MOVAX,DATMOVDS,AXMOVAX,STAMOVSS,AX ;初始化DS、SS指向STAMOVBX,OFFSET NUMMOVCX,N_START:MOVAX,BX;取出NUM中的第一个数字CMPAX,0JZ_Z ;判断是0,跳转到Z自加SALAX,1 JC_B ;判断是小于0,跳转到B自加INCWORD PTR A;否则,A自加JMP_OK_B:INCWORD PTR BJMP_OK_Z:INCZ_OK:ADDBX,2LOOP_START;循环CX次判断MOVCX,3 ;显示3句话XORBX,BX_SHOW:MOVDX,LOCATEBX ;显示一句话MOVAH,09HINT21HMOVDX,ZBX ADDDX,0MOVAH,02HINT21H ;加上ASCII码,显示Z、A、B的值ADDBX,2LOOP_SHOWMOVAX,4C00HINT21H ;返回DOS系统COD ENDS END STAR五、程序运行结果答:程序中数据为NUM,是9,0,6,-4,-1,-5,5,-9,-8,-1,9一组数。 六、思考题1.十进制数 0 - 9 所对应的 ASCII 码是什么? 如何将十进制数 0 -9 在屏幕上显示出来? 答:对应的ASCII码是30H,31H,32H,33H,34H,35H,36H,37H,38H,39H。 对应的ASCII码赋给DX,用2号功能调用即可。 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答: 先检验其ZF位,再检验其SF位。 将待判断的数与0比较,同样先检验ZF,再检验CF位。七、 实验总结、建议要求、心得体会已经能够开始独立进行汇编语言程序设计了,通过上课和实验编程初步掌握了基本分支,循环程序的设计,数字的显示相关功能,即掌握了最简单的 DOS 功能调用。但是用这种方法预见如果显示一串在程序中得到的数字,将会是比较繁琐的过程。实验三 代码转换程序设计一、实验目的 1.掌握几种最基本的代码转换方法; 2.运用子程序进行程序设计。 二、实验任务及内容 1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来。 2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明。 3.对输入要有检错措施,以防止非法字符输入,并有适当的提示。 4.将整个程序分解为若干模块,分别用子程序实现。在报告中要给出模块层次图。显示输入的二位数,与MIN比较,取较小值刷新YY显示最小值,结束YNYY输入结束符.错误提示N输入是数字09输入分隔符;开始数据、提示字符串、最小值(99)初始化输入十位,调用子程序输入是数字09输入个位,调用子程序N三、程序流程图 N四、源程序 DATA SEGMENTREMIND DB 0DH,0AH,Please input the decimal numbers(the token is ; end with .):,0DH,0AH,$ERROR DB 0DH,0AH,INPUT ERROR,0DH,0AH,$STR DB 0DH,0AH,the minimum is:,0DH,0AH,$MIN DB 9,9DATA ENDS ;设置最初输入提醒、错误提示、初始化最小值为99。STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKINPUT PROC NEAR ; 提供显示的子程序 MOV AH,01H; 非法输入则将AL = 0后返回 INT 21H CMP AL,0 JB FLAG CMP AL,9 JA FLAG RET FLAG: MOV AL,0 RETINPUT ENDPSTART: MOV AX,DATA MOV DS,AX ;初始化数据段DSLOOP1: MOV AH,09H MOV DX, OFFSET REMIND ;显示输入提示的字符串 INT 21H LOOP2: CALL INPUT ; 调用输入子程序,输入十位数 CMP AL,0 ; 错误则输出提醒 JZ ERR MOV DH,AL CALL INPUT ; 调用输入子程序,输入个位数 CMP AL,0 ; 错误则输出提醒 JZ ERR MOV DL,AL MOV AH,1 INT 21H CMP AL,. JZ EXIT ;判断是结束符“.”则跳转 CMP AL,; ;判断是分隔符才继续 JNZ ERR CMP DX,WORD PTR MIN ;比较较小值,是则跳转并刷新最小值 JB SWAP JMP LOOP2 EXIT: MOV AH,09H ; 显示最小值的那句话 MOV DX,OFFSET STR INT 21H MOV AH,02H MOV DL,MIN+1 ;显示最小值的十位 INT 21H MOV AH,02H MOV DL,MIN ;显示最小值的个位 INT 21H MOV AX,4C00H ;返回DOS系统 INT 21HSWAP: MOV WORD PTR MIN,DX ; 刷新最小值 JMP LOOP2ERR: MOV DX,OFFSET ERROR MOV AH,09H INT 21H JMP LOOP1CODE ENDS END START五、程序运行结果 分隔符是“;”,结束符是“.”。错误提示为“INPUT ERROR”。三位数输入、一位数输入、分隔符不对、结束符不对,都会有错误提示。运行后结果抓图显示如下:六、思考题1.如何将输入的两个字符(0 - 9)变为十进制或二进制数? 答: 将输入的两个字符(0 - 9)变为十进制:输入的十进制二位数的十位放入寄存器(DX)高位,输入的个位放入寄存器(DX)的低位。输出相应的值,则可称变为十进制。 将中寄存器的数化为二进制,形成BCD码。在运用BCD码化为二进制数的规则就可将两个字符变为二进制。 2.如何将选出的最小值(二进制或十进制)变为 ASCII 码再进行显示? 答:选出的最小值按高低位储存在寄存器的高低位,那么将高低位分别加上“0”的ASCII码,调用2号功能即可。 3.你觉得采用二进制运算还是十进制运算更适合于这个实验?答:在实验设计中,使用的是二进制(十六进制)在机器中运算的,这样更加方便和简洁。七、实验总结、建议要求、心得体会这次学习并运用了子程序进行程序设计。子程序设计的最重要的地方在于入口参数、出口参数的设计与主程序之间的关系。还有子程序功能之前应该保护现场。本实验主要将子程序设计在从键盘输入数字的功能,并设置标志,用于主程序确认输入是否正确。分隔符、结束符的确认较为简单,只需一个比较就可以了。数字的确认需要两个比较,即必须在09之间。输入错误时调用09号功能输出提示字符串 。对于最小值的确认,初始应设为最大值99,以方便接下来的刷新。得到最小值就将其赋给MIN,最后再位、个位分别输出。实验四 子程序设计 一、实验目的 1.进一步掌握子程序设计方法; 2.进一步掌握基本的 DOS 功能调用。 二、实验内容 1.从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入。 2.统计检查每个学生的名次。 3.将统计结果在屏幕上显示。 4.为便于观察,输入学生数目不宜太多,以不超过一屏为宜。输出应便于阅读.尽可能考虑美观。 5.输入要有检错手段。三、程序流程图Y输入为合法:0099或者MAX开始数据、循环初始化设置先后输入学生分数的十位、个位高位存储至HIGH,低位存储至LOW显示空格,在相应存储地址处占位0FFH1N1初始化循环CX = 输入的数据个数将每个输入数与所有的数比较,得到每个输入数的名次YNCX = 0将排名R 学号ST 成绩SC输出结束四、源程序DATA SEGMENTHIGHDB100DUP(0FFH)LOWDB100DUP(0FFH)NDB ? N1DB ? NUMEQU$-LOWNUMBERDB?LOOP3SDB0DISPLAYDB0DH,0AH,ERROR! PLEASE INPUT A NUMBER,0DH,0AH,$BEGIN_ DB0DH,0AH,PLEASE INPUT SCORES:,0DH,0AH,$RESULTS DB0DH,0AH,0DH,0AH,THE STUTENTS ARRAY:,0DH,0AH,0AH, R ST SC, $DATA ENDS;以上为数据段设置,包括将要使用的变量及输入提示、错误提示。CODE SEGMENTASSUMECS:CODEDS:DATACOMIND PROCMOVDX, OFFSET BEGIN_MOVAH,09HINT21HRETCOMIND ENDP ;显示输入的提示DISPROCMOVDX,OFFSET DISPLAYMOVAH,09HINT21HRETDISENDP ;显示输入错误时的提示ERROR:MOVBYTE PTR SI,0FFHMOVBYTE PTR DI,0FFHCALLDISJMPLOOP1 ;输入错误时显示错误提示,并返回程序最初MAX100:MOVAH, 01HINT21HCMPAL, AJZMC ;与A的ASCII码比较,不相等跳转到错误处JMPERRORMC:MOVAH, 01HINT21HCMPAL, X ;与A的ASCII码比较,不相等跳转到错误处JZMMCJMPERRORMMC:MOVDL, ;显示空格MOVAH,02HINT21HMOVBYTE PTR SI,MMOVBYTE PTR DI,XINC SIINC DIINCNUMBERLOOPLOOP1START:MOVAX, DATA ;程序开始的位置MOVDS, AXMOVSI, OFFSET HIGH ;所有高位的首地址MOVDI, OFFSET LOW ;所有低位的首地址MOVCX, NUM ;循环次数CX;以上是对程序的初始化MOVNUMBER, 0 ;初始化二位数的个数CALLCOMIND ;显示输入的提示LOOP1: MOVAH,01HINT21HCMPAL,0DH ;允许输入,将输入与空格比较,相等则跳转JZEDDCMPAL,MJZMAX100CMPAL,0JBERRORCMPAL,9JAERROR ;确认输入的每个数的高位为0 9的数字MOVSI, AL ;将输入数的高位保存到高位的地址MOVAH, 01HINT21HCMPAL, 0DHJZEDDCMPAL, 0JBERRORCMPAL, 9JAERROR ;确认输入的每个数低位为0 9的数字 MOVDI, AL ;将输入数的低位保存到低位的地址 MOVDL, MOVAH, 02H ;显示一个空格,作为每个二位数之间的分隔符INT21HINCSIINCDIINCNUMBERLOOPLOOP1EDD:MOVBYTE PTR SI,0FFH ;输入为空格时在SI、DI相应位置填充0FFHMOVBYTE PTR DI,0FFHMOVAL, NUMBERMOVLOOP3S, AL LOOP3:MOVSI, OFFSET HIGH ;重新赋高低位的首地址给SI、DI MOVDI, OFFSET LOWXORCH, CHMOVCL, NUMBER ;存储的数据的个数CL为接下来的循环次数MOVBX, 0FFFFHMOVN,1MOVN1,0LOOP2:MOVAH, SI ;将数据依次赋给AX MOVAL, DI ;AX BX, COUNT 自加1CMPAX, BXJAECONTMOVBX, AXMOVDL, NMOVDH, N1 ;DX =01H,比别的数小的话,DX加1CONT:INCSI INC DICMPN, 9 ;N与9的ASCII码比较,相等就跳转JE UPADDN, 1JMPUPLOOP UP:ADDN1, 1MOVN,0 ;将DX作为十进制(BCD码)的计数器的ASCII码UPLOOP:LOOPLOOP2PUSHBXPUSHDX MOVBX, DXSUB BX, 3030H ;将DX中保存的计数的ASCII码转为真正的数值MOVAL, 0AHMULBH XORBH, BHADDAX, BX ;AX = (16进制的)计数DECAXMOVSI, OFFSET HIGHMOVDI, OFFSET LOWADDSI, AXADDDI, AXMOVBYTE PTR SI, 0FFHMOVBYTE PTR DI, 0FFHXORCH, CHMOVCL, LOOP3SDECLOOP3SLOOPLOOP3JMP RESULTRESULT: MOV CL, NUMBER ;输入数据中个数是显示循环次数XORCH, CHMOVN, 1MOVN1, 0MOVDX, OFFSET RESULTS ;显示结果的那句字符串MOVAH, 09HINT21HLOOP4:POPBXMOVDL,0AH ;显示换行MOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21H ;显示空格MOVDL, MOVAH,02HINT21HMOVDL, MOVAH,02HINT21H ;显示两个空格MOVDL,N1MOVAH,02HINT21HMOVDL,NMOVAH,02HINT21H ;显示名次MOVDL, MOVAH,02HINT21HMOVDL, MOVAH,02HINT21H ;显示两个空格MOVDL,BHMOVAH,02HINT21HMOVDL,BLMOVAH,02HINT21H ;显示输入的次序(学号)MOVDL, MOVAH,02HINT21HMOVDL, MOVAH,02HINT21HMOVDL, MOVAH,02HINT21HPOPBXMOVDL, BHMOVAH, 02HINT21HMOVDL,BLMOVAH,02HINT21H ;输出该名次的成绩CMPN,9JEUP4ADDN,1JMPUPLOOP4UP4:ADDN1,1MOVN,0UPLOOP4: LOOPLOOP4MOVAX,4C00HINT21HCODEENDSENDSTART五、程序运行结果 输入正确,并且没有满分时的情况,分别以名次(R),学号(ST),成绩(SC)列表。 有满分(MAX)时,成绩的排列情况。其中,满分是以MX形式输出。 输入有错误时,给出的错误提示“ERROR!”并要求接着输入“PLEASE INPUT A NUMBER”。而之前输入的数据并没有被抹去,仍可以使用。六、思考题1.如何确定一个学生在这门科目中的名次? 答:将该同学的成绩与其他学生的成绩一一比对,小的话,寄存器加1。最后寄存器中的数值+1,就是该同学的名次。2.你觉得输入结束后,采用什么方法进行比较以得到学生的名次最为简单? 答:从数据结构中可以知道,比较一组数的大小并排列,冒泡排序是最为简单的。3.准备好模块层次图。 答:见流程图。4.给出输出显示的形式。答:如下图所示:七、实验总结、建议要求、心得体会在这个实验中,我进一步掌握了子程序的设计方法,还有基本的 DOS 9号、一号等功能调用。 由于要完成从键盘上输入某班学生的某科目成绩,所以设置了计数器用以记录成绩。而输入默认按学生的学号由小到大的顺序输入。在这个实验中,输入“MAX”代替了100分,而输出则显示“MX”,并排在第一位。避免了满分同学无法录入的问题。同时,还有纠错功能。显示“ERROR! PLEASE INPUT A NUMBER”。由于要求接着输入“PLEASE INPUT A NUMBER”并且之前输入的数据并没有被抹去,仍可以使用。这样,更加人性化。实验五 中断程序设计一、实验目的 1.初步掌握中断程序的设计方法; 2.初步掌握修改 DOS 系统中断,以适应实际使用的方法。 二、实验任务及内容 1.编写一个 32 位二进制数除以 16 位二进制数的除法程序。观察当除数为 0,或超过相应寄存器范围时,程序执行的结果。 2.修改零号中断服务程序,使它具有以下功能: (1)判断除数是否为 0,当除数为 0 时,显示相应的结果; (2)当除数不为 0 时,采用适当的方法完成商超过 16 位的二进制数的除法运算; 3.注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复。 选做题: 4.用二进制将结果在屏幕上显示. 5.从键盘输入二进制数。三、程序流程图N开始初始化,中断程序入口地址写入调用写入子程序调用检验子程序写入有错误Y错误提示高位灭0,输出商符合中断情况中断恢复结束四、源程序 Data segment str01 db Please input a binary divident,at most 32 digited!,0dh,0ah,$ str02 db 0dh,0ah,Please input a binary divisor,at most 16 digited!,0dh,0ah,$ str0 db 0dh,0ah,Illegal input,please input again!,0dh,0ah,$ str1 db 0dh,0ah,Divisor should not be 0!$ str3 db 0dh,0ah,Quotient:$ str4 db 0dh,0ah,Residual:$ dividend _ h dw 0 dividend _ l dw 0 divisor dw 0 quotient dw 2 dup(0) residual dw 0 keepip dw 0 keepcs dw 0data endsstack segment stack stack db 100 dup(?)stack endscode segment para code assume cs:code,ss:stack,ds:data,es:datasta proc far push dsxor ax, axpush axmov ax, datamov ds,axmov es,axmov ax,3500hint 21hmov keepip,bxmov keepcs,esclipush ds ;中断程序装载mov ax,seg myovflmov ds,axmov dx,offset myovflmov ax,2500hint 21hpop dssticall input mov ax,divident_lmov dx,divident_hmov bx,divisor cmp bx,0jnz nextlea dx,str1mov ah,9int 21hjmp done next:div bxmov quotient,axmov residual,dx rtaddr:call output;返回后输出商和余数 done:cli;恢复原中断向量push dsmov dx,keepipmov ax,keepcsmov ds,axmov ax,2500h int 21hpop dsstiret myovfl:pop cx;中断服务程序lea cx,rtaddrpush cxpush axmov ax,dxmov dx,0div bxmov quotient+2,axpop axdiv bxmov quotient,axmov residual,dxstiiretsta endpcheck proc;输入检错,标志为blcmp al,0jl falsecmp al,1jg falsemov bl,1jmp exit false:mov bl,0 exit:retcheck endpinput proc;依次输入被除数和除数lea dx,str01mov ah,9int 21hmov cx,32;被除数最多32位 input1:mov ah,1int 21hcmp cx,32;第一个字符不能为回车符jz next1cmp al,0dhjz done1 next1:call checkcmp bl,0jz err1and al,0fh;输入字符的转化sal divident_l,1rcl divident_h,1mov ah,0add divident_l,axadc divident_h,0jmp l1 err1:lea dx,str0mov ah,9int 21hinc cx l1:loop input1 done1:lea dx,str02mov ah,9int 21h mov cx,16 input2:mov ah,1int 21hcmp cx,16jz next2cmp al,0dhjz done2 next2:call checkcmp bl

温馨提示

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

评论

0/150

提交评论