北邮微机原理实验报告_第1页
北邮微机原理实验报告_第2页
北邮微机原理实验报告_第3页
北邮微机原理实验报告_第4页
北邮微机原理实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、微原软件实验报告班级:序号:学号:姓名:实验二 分支,循环程序设计一.实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的 DOS 功能调用.二.实验内容: 1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不超过 9. 2.编写一个程序统计数据区中正数,负数和零的个数. 3.将统计结果在屏幕上显示.三.预习题: 1.十进制数 0 - 9 所对应的 ASCII 码是什么? 如何将十进制数 0 - 9 在 屏幕上显示出来? 答:09对应的ASCII码是30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

2、,将十进制数转换成相应的ASCII码并调用字符显示功能即能实现十进制数在屏幕上的显示。2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:将该数与0字符(ASCII码为30H)比较,根据比较的结果转入不同的分支。四流程图:五代码:DATA SEGMENTBUFF DW 1,2,3,-1,-2,-3,-4,0,4,5,-5,0 ;原始12个数据COUNT EQU $-BUFF ;COUNT的值为BUFF所占的字节数PLUS DB ? ;大于零的个数ZERO DB ? ;零的个数MINUS DB ? ;小于零的个数STRING1 DB PLUS NUMMBER:,$STRING2

3、DB ZERO NUMMBER:,$STRING3 DB MIMUS NUMMBER:,$DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKBEGIN: MOV AX,DATA MOV DS,AX MOV CX,COUNT SHR CX,1 ;相当于除以2,正好为BUFF中的数据数 MOV DX,0 ;设定初值:DH,DL分别为等于、大于零的个数 MOV AH,0 ;设定初值:AH为小于零的个数 LEA BX,BUFF;将BU

4、FF的偏移地址送给BXAGAIN: CMP WORD PTRBX,0 JGE PLU;不小于0时转移到PLU INC AH ;统计小于零的个数 JMP NEXTPLU: JZ ZER;等于零时转ZER INC DL;统计大于零的个数 JMP NEXTZER: INC DH;统计等于零的个数NEXT:INC BX;修改地址指针 INC BX LOOP AGAIN ADD DL,30H ;转换成ASCII码 MOV PLUS,DL; 保存结果 ADD DH,30H ;转换成ASCII码 MOV ZERO,DH ADD AH,30H ;转换成ASCII码 MOV MINUS,AH SHOW: ;显示

5、 MOV DX,OFFSET STRING1 MOV AH , 09H INT 21H MOV DL,PLUS MOV AH,02H INT 21H ;显示正数个数 MOV DL,0DH INT 21H ;回车 MOV DL,0AH INT 21H ;换行 MOV DX,OFFSET STRING2 MOV AH , 09H INT 21H MOV DL,ZERO MOV AH,02H INT 21H ;显示零个数 MOV DL,0DH INT 21H ;回车 MOV DL,0AH INT 21H ;换行 MOV DX,OFFSET STRING1 MOV AH , 09H INT 21H M

6、OV DL,MINUS MOV AH,02H ;显示负数个数 INT 21H MOV DL,0DH INT 21H ;回车 MOV DL,0AH INT 21H ;换行 MOV AX,4C00H ;回到操作系统 INT 21HCODE ENDSEND BEGIN六.运行结果:七总结:第一次在DOS窗口下用汇编编程,一些基本的操作和以前的高级语言迥然不同,如建立文件,编译,链接,调试,这些操作都是要在DOS窗口中键入语言指令来完成的,不像高级语言的编译器只要按下相关的键就好了,用语言指令能更加明白编译,调试这些操作真正的含义。更重要的是调试指令,通过这些指令,可以直接看到寄存器,内存中真真切切的

7、变化,对硬件的工作机制特别是cpu的指令运行,内存的数据存储与读取,整个程序运行的本质过程有了更加透彻的了解和认识。在本次实验中,主要对顺序结构,分支结构以及循环结构有了初步的运用,程序编写的关键是流程图,当对题目有了分析并且设计出了条理清晰,步骤较为详细的流程图之后,只要对照图写就很快:顺序执行下来的地方用顺序结构,有判断的地方用分支结构,有循环执行的地方用循环结构,整个程序的框架就构建完成,剩下的就是变量、寄存器以及内存空间的读写了。 实验三 代码转换程序设计一.实验目的: 1.掌握几种最基本的代码转换方法; 2.运用子程序进行程序设计.二.实验内容: 1.从键盘上输入若干两位十进制数,寻

8、找其中的最小值,然后在屏幕上显示出来. 2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明. 3.对输入要有检错措施,以防止非法字符输入,并有适当的提示. 4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.三.预习题: 1.如何将输入的两个字符(0 - 9)变为十进制或二进制数? 答:因为输入的字符是以ASCCII码(8位二进制)表示的,所以分别对两个字符做减30H的操作,再将先输入的字符作为十位,后输入的字符为个位即可得到相应十进制的二位数。 2.如何将选出的最小值(二进制或十进制)变为 ASCII 码再进行显示? 答:将选出的十进制最小值加上30H即变

9、成了对应的ASCII码,将这个值的十位和个位先后存储在DL中,先后两次使用AH=02H功能输出整个两位十进制数。 但是其实在数的存储和输出时不需要进行ASCII码与十进制数的转换,直接对ASII码的大小比较即可。 3.你觉得采用二进制运算还是十进制运算更适合于这个实验? 答:正如上面题中所说,直接用二进制运算对于这个实验来说更加方便和简单。四流程图:五模块层次图:六代码:DATA SEGMENTMIN DB 9,9STRING0 DB 0DH,0AH,PLEASE INPUT SOME INTEGER(2 NUMBERS) WITH SPACE AND STOP WITH ENTER:, 0D

10、H,0AH,$STRING1 DB 0DH,0AH,ERROR!PLEASE INPUT AGAIN: ,0DH,0AH,$ STRING2 DB 0DH,0AH,MIN IS:,0DH,0AH,$DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK;*输入子函数*INPUT PROC NEAR ;键盘输入的子程序,AL=输入码 MOV AH,01H ;键盘输入的功能码 INT 21HRET ;回到DOSINPUT ENDP;*

11、检查子函数*TESTE PROC NEAR ;检查输入字符是否符合要求 CMP AL,0 JB ERROR CMP AL,9 JA ERROR ;若输入字符的ASCII码不在0-9范围内判为输入错误 JMP EXIT ;否则转EXITERROR:MOV AL,0HERROR1: MOV DX,OFFSET STRING1 ;输出错误提示 MOV AH,09H INT 21H JMP CYCLE ;回到主循环EXIT: RET TESTE ENDP ;退出检测;*比较子函数*COMP PROC NEAR CMP BX,WORD PTR MIN ;比较BX的内容和MIN指向的数据段内存的数据 JB

12、 CHANGE ;如果BX小于现有的最小值,转CHANGE JMP CYCLE ;否则回到主循环CHANGE: MOV WORD PTR MIN,BX JMP CYCLERETCOMP ENDP;*显示子函数*SHOWP PROC NEAR CMP BX,WORD PTR MIN JB UPDATE DISPLAY: MOV DX,OFFSET STRING2 MOV AH,09H INT 21H MOV DL ,MIN +1 MOV AH,02H INT 21H MOV DL ,MIN MOV AH,02H INT 21H MOV DL,0DH INT 21H MOV DL,0AH INT

13、21H MOV AH,4CH ;返回DOS INT 21HUPDATE: MOV WORD PTR MIN ,BX JMP DISPLAYRETSHOWP ENDP;*主程序开始*MAIN:MOV AX,DATA MOV DS,AX ;给当前的数据段基地址赋值 MOV DX,OFFSET STRING0 ;将STRING0的偏移地址赋值给DX MOV AH,09H ;字符串打印输出 INT 21H CYCLE: ;循环 CALL INPUT ;调用键盘输入的子程序输入十位 CALL TESTE ;调用检测的子程序 CMP AL,00H JZ ERROR1 MOV BH,AL ;将十位存入BH,

14、待后面比较大小 CALL INPUT ;调用键盘输入的子程序输入个位 CALL TESTE ;调用检测的子程序 CMP AL,00H JZ ERROR1 MOV BL,AL ;将个位存入BL,待后面比较大小 CALL INPUT CMP AL ,0DH ;判断此时是否输入了ENTER键结束 JZ SHOW ;是则转SHOW CMP AL , ;判断是否输入空格键分割两个数 JZ COMPARE ;是则转COMPARE比较更新最小数 JMP ERROR1 ;都不是则是输入错误COMPARE: CALL COMPSHOW: CALL SHOWPCODE ENDS END MAIN七运行结果:结果说

15、明:第一次运行,输入正确,按下回车就会显示输入数字中的最小值。 第二次运行,输入了不是09的字符$则提示输入错误,重新输入,再次输入时输入了一个三位数,又会提示输入错误。 八总结: 本次实验和上个实验一样还是要比较数之间的大小关系,只不过这次要求更高:待比较的对象都是从键盘输入,且每次的比较的两个对象不是固定的,比较完成后需要将比较的两个对象之一写入固定的变量中。 分析完程序要求后还是写流程图,写的过程中就会发现功能其实是要多次调用的,如输入模块,检验模块。比较大小及更新最小值的部分在一次循环中只需要执行一次,可以不用子程序的形式,不过为了程序看起来更加有层次感和模块化,我将比较和显示也分别写

16、成了子程序的形式,这样主程序看起来就更加简洁明了。 这次对子程序的使用让我更加清楚了子程序的实质,其实它就是一段在别处封装好的具有一定功能实现的代码段,当call它的时候就转到子程序所在的地址执行,遇到RET时再返回到调用的断点处,这是与转移指令有本质区别的地方,转移指令是“一去不回”,而子程序是“有去有回”。 实验四 子程序设计一.实验目的: 1.进一步掌握子程序设计方法; 2.进一步掌握基本的 DOS 功能调用.二.实验内容: 1.从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入. 2.统计检查每个学生的名次. 3.将统计结果在屏幕上显示. 4.为便于观察,输入学生数目

17、不宜太多,以不超过一屏为宜.输出应便于阅读.尽可 能考虑美观. 5.输入要有检错手段.三.预习题: 1.如何确定一个学生在这门科目中的名次? 答:对输入的成绩进行排序,并且较大数存在低地址,较小的数存在高地址。 2.你觉得输入结束后,采用什么方法进行比较以得到学生的名次最为简单? 答:在对成绩进行排序和改变其在内存中的存储位置的同时将每个成绩对应的序号用同样的方法改变序号在内存中的存储位置,这样将排序后的序号连续读出来就能得到所有序号对应学生在这门科目中的名次。 3.准备好模块层次图. 4.给出输出显示的形式. 排名:1 2 3 4 5 . 序号:(与下面的成绩对应) 成绩:(从高到低排列)四

18、流程图: 五代码:DATA SEGMENTBUFF0 DW 10 DUP(0000H) ;存放成绩(一个字节存放一位十进制数的ASCII码值)BUFF1 DB 10 DUP(31H,32H,33H,34H,35H,36H,37H,38H,39H,40H) ;存放序号BUFF2 DB 10 DUP(31H,32H,33H,34H,35H,36H,37H,38H,39H,40H) ;存放排名COUNT1 DB 0 ;BUFF中存放的字节数/内层冒泡需比较的次数COUNT2 DB 0 ;BUFF中存放的成绩个数STRING0 DB 0DH,0AH,PLEASE INPUT THE SCORES: ,

19、0DH,0AH,$ ;输入成绩提示STRING1 DB 0DH,0AH,ERROR!PLEASE INPUT AGAIN: ,0DH,0AH,$ ;输入错误提示STRING2 DB 0DH,0AH,RANK : ,$ ;排名输出STRING3 DB 0DH,0AH,NUMBER: ,$ ;序号输出STRING4 DB 0DH,0AH,SCORES: ,$ ;成绩输出DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;*输入子函数*INPUT

20、PROC MOV AH,01H INT 21H ;AL=输入字符 RETINPUT ENDP;*输入检错子函数*TEST1 PROC CMP AL,0 JB ERROR CMP AL,9 JA ERROR ;输入字符不是0到9之间的数转ERROR JMP EXITERROR:MOV AL,00HEXIT: RET TEST1 ENDP;*存储子函数*SAVE1 PROC ;十位存在高地址 MOV SI,OFFSET BUFF0 ;将成绩变量的偏移量首地址赋给SI MOV CX,0000H MOV CL,COUNT1 ;做SI的偏移量 ADD SI,CX INC SI ;先存储十位,十位存在高地

21、址 MOV SI,AL ;将AL中的输入数据存在地址为SI的内存中 INC COUNT1 ;成绩变量的字节数加一 RETSAVE1 ENDPSAVE2 PROC ;再存储个位,个位存入低地址 MOV SI,OFFSET BUFF0 MOV CX,0000H MOV CL,COUNT1 ADD SI,CX DEC SI ;个位存在低地址 MOV SI,AL INC COUNT1 ;成绩变量的字节数加一 RETSAVE2 ENDP;*两两比较并排序子函数*COMPARE PROC ;两两比较,并将大数存在低地址 CMP AX,BX ;AX是低地址的,BX是高地址的 JB EXCHANGE JMP

22、EXIT0EXCHANGE: ;交换成绩 MOV CX,0 MOV SI,OFFSET BUFF0 ADD SI,DX ;DX是当前偏移的字节个数 MOV SI,BX ADD SI,2 MOV SI,AX ;交换序号 MOV SI,OFFSET BUFF1 SHR DX,1 ;BUFF1是BYTE ADD SI,DX MOV AH,SI ;序号交换 INC SI MOV BH,SI MOV SI,AH DEC SI MOV SI,BHEXIT0:RETCOMPARE ENDP;*主程序入口* START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING0 M

23、OV AH,09H INT 21H MOV AX,0000HCYCLE:CALL INPUT CALL TEST1 CMP AL,00H JZ WRONG0 CALL SAVE1 ;保存十位数 CALL INPUT CALL TEST1 CMP AL,00H JZ WRONG0 CALL SAVE2 ;保存个位数 CALL INPUT CMP AL,0DH JZ LIST ;输入回车,转LIST,排序 CMP AL, JZ CYCLE ;输入空格,继续处理下一个数 JMP WRONG0 ;其他情况转WRONG0WRONG0:MOV DX,OFFSET STRING1 MOV AH,09H IN

24、T 21H MOV CL,0 ;出现错误,计数复位 MOV COUNT1,CL JMP CYCLELIST: MOV CL,COUNT1 SHR CL,1 MOV COUNT2,CL ;COUNT2中是待排序的数的个数 DEC CL MOV COUNT1,CL ;COUNT1中是每次外循环内循环需比较的次数及外循环的总次数 JZ SHOW0;*冒泡排序*ORDER0:MOV CL,0 ;内层循环计数器清零ORDER1:MOV SI,OFFSET BUFF0 ;内循环 MOV DH,0 MOV DL,CL ;CL是内层循环计数器 SHL DL,1 ADD SI,DX MOV AX,SI ;将此时

25、BUFF中地址次低的数取出来放入AX中待比较 ADD SI,2 MOV BX,SI ;将此时BUFF中地址最低的数取出来放入BX中待比较 CALL COMPARE ;比较AX和BX,结果是将较大的数放入低地址存储 INC CL ;内循环计数器CL加一 CMP CL,COUNT1 JE ORDER2 ;当循环次数够了时需要进入外循环 JMP ORDER1ORDER2:MOV CL,COUNT1 ;外循环 DEC CL MOV COUNT1,CL ;每执行完一次内循环内循环的循环次数COUNT1减一 JNZ ORDER0 ;只要计算得到的内循环次数不为零则开始下次内循环 JMP SHOW0;*打印

26、名次*SHOW0: MOV DX,OFFSET STRING2 MOV AH,09H INT 21H MOV AH,02H MOV SI,OFFSET BUFF2 MOV CL,COUNT2SHOW00: MOV DL,SI INT 21H INC SI MOV DL, INT 21H MOV DL, INT 21H DEC CL JNZ SHOW00;*打印序号*SHOW1: MOV DX,OFFSET STRING3 MOV AH,09H INT 21H MOV AH,02H MOV SI,OFFSET BUFF1 MOV CL,COUNT2SHOW10: MOV DL,SI INT 21

27、H INC SI MOV DL, INT 21H MOV DL, INT 21H DEC CL JNZ SHOW10;*打印成绩*SHOW2: MOV DX,OFFSET STRING4 MOV AH,09H INT 21H MOV AH,02H MOV SI,OFFSET BUFF0 MOV CL,COUNT2SHOW20:INC SI ;先打印十位数中的(用ASCII码表示的)高位 MOV DL,SI INT 21H DEC SI ;再打印十位数中的(用ASCII码表示的)低位 MOV DL,SI INT 21H INC SI INC SI MOV DL, INT 21H DEC CL J

28、NZ SHOW20;* MOV AH,4CH INT 21HCODE ENDS END START五运行结果:六总结:本次实验可以分为三大块,一是输入及存储,二是排序,三是显示,在第一部分中很多是上个实验已经实现的功能,唯一不同的地方是这次需要将每次输入的数据有序的存在一段连续的内存中,以便输入结束后能对这段内存中的数进行排序。排序模块需要对排序算法有较为透彻的理解,这里采用冒泡排序,减小时间复杂度,和高级语言中的冒泡排序不同的是,这里要对数据所在的地址有非常清晰的认识,这样才能有序的进行两数的比较以及比较完毕可能会有的数据交换。显示部分相对来说就比较简单了,用地址加的方式对相应字符串中的字节

29、进行显示即可。在这次实验中,让我最受益匪浅的是,在算法设计及数据读写的过程中数据所在地址的变化,这经常让我转晕了,所以就得在纸上画出内存及其地址的示意图来帮助我。整个程序下来对硬件中内存地址的分配和数据的存储有了更加清晰的认识。 实验五 中断程序设计一.实验目的: 1.初步掌握中断程序的设计方法: 2.初步掌握修改 DOS 系统中断,以适应实际使用的方法.二.实验内容: 1.编写一个 32 位二进制数除以 16 位二进制数的除法程序.观察当除数为 0,或 超过相应寄存器范围时,程序执行的结果. 2.修改零号中断服务程序,使它具有以下功能: (1)判断除数是否为 0,当除数为 0 时,显示相应的

30、结果; (2)当除数不为 0 时,采用适当的方法完成商超过 16 位的二进制数的除法运算. 3.注意必须保护原有中断服务程序的入口地址,并在程序完毕前加以恢复.三.预习题: 1.如何保护原有中断向量表中的中断服务程序的入口地址? 答:在主程序一开始就将原终端服务程序的入口地址压栈保存。 2.如何将你的中断服务程序入口地址置入中断向量表? 答:用直接写入的方法,将我的中断服务子程序的段地址和偏移地址赋给ES:0002H和ES:0000H四.选作题: 1.用二进制将结果在屏幕上显示. 2.从键盘输入二进制数.五流程图:六代码:DATA SEGMENTBUFF DB 17 DB 0 DB 17 DU

31、P(?) ;定义缓冲区,最多允许输入17个字符(包括回车) ;存放输入的字符串DIVIDEND DW 2 DUP(?) ;存放32位被除数DIVISOR DW ? ;存放16位除数TEMP DW ? ;暂时存放16个bitFLAG DB 0 ;FLAG=1为溢出STRING0 DB 0DH,0AH,PLEASE INPUT THE DIVIDEND(HIGH 16 bits):,$ ;输入被除数的高16bitSTRING1 DB 0DH,0AH,PLEASE INPUT THE DIVIDEND(LOW 16 bits):,$ ;输入被除数的低16bitSTRING2 DB 0DH,0AH,P

32、LEASE INPUT THE DIVISOR:,$ ;输入除数QUOTIENT DB 0DH,0AH,QUOTIENT :,$ ;商输出REMAINER DB 0DH,0AH,REMAINDER :,$ ;余数输出ERROR DB 0DH,0AH,THE DIVISOR CANNOT BE 0!,0DH,0AH,$ ;除数为零的警告ENTER DB 0DH,0AH,$ ;回车换行TAB DB 09H,$ ;横向制表DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CO

33、DE,ES:CODE,SS:STACK;*字符串显示的宏定义*PRINT MACRO STRINGPUSH DXPUSH AX ;保护现场MOV DX,OFFSET STRINGMOV AH,09HINT 21HPOP AXPOP DX ;还原现场ENDM;*输入子程序*INPUT PROC NEARPUSH AX PUSH BX PUSH DX ;保护现场PRINT STRING0 ;输入被除数的高16位CALL GETCALL CHANGE2MOV AX,TEMPMOV WORD PTR DIVIDEND0,AX ;保存被除数的高16位PRINT ENTERPRINT STRING1 ;输

34、入被除数的低16位CALL GETCALL CHANGE2MOV AX,TEMPMOV WORD PTR DIVIDEND2,AX ;保存被除数的低16位PRINT ENTERPRINT STRING2 ;输入除数的16位CALL GETCALL CHANGE2MOV AX,TEMPMOV WORD PTR DIVISOR,AX ;保存除数的16位PRINT ENTERPOP DXPOP BXPOP AXRETINPUT ENDP;*一次输入子程序*GET PROC NEARPUSH DXPUSH AXMOV DX,OFFSET BUFFMOV AH,0AHINT 21HPOP AXPOP D

35、XRETGET ENDP;*ASCII到二进制字符串的转换*CHANGE2 PROC NEARPUSH CXPUSH BXPUSH AXPUSH DXMOV CX,16 ;控制循环次数MOV BX,0002H ;BX代表第几个ASCII码字符待转换HEAR:MOV AL,BUFFBX ;AX中存的是带转为0或1的ASCII码CMP AL,30HJE ZERO ;当是0时转ZEROJMP ONE ;否则转ONEZERO:CLC ;CF清零 RCL DX,1 ;循环左移一位 JMP LASTONE:STC ;CF置1 RCL DX,1 ;循环左移一位LAST:INC BXLOOP HEARMOV

36、TEMP,DXPOP DXPOP AXPOP BXPOP CXRETCHANGE2 ENDP;*主程序*START:MOV AX,DATA MOV DS,AX MOV AX,0000H MOV ES,AX;*保存原有的0号中断子程序地址*MOV AX,ES:0000HPUSH AX ;原IP压栈MOV AX,ES:0002H ;原DS压栈PUSH AX;*向向量表中写入新的0号中断程序地址*MOV WORD PTR ES:0000H,OFFSET INT00 ;新IP写入MOV WORD PTR ES:0002H,SEG INT00 ;新DS写入CALL INPUT ;调用输入子程序,除数和被

37、除数都被写进了相应的变量中MOV DX,WORD PTR DIVIDEND ;被除数高16位存入DXMOV AX,WORD PTR DIVIDEND2 ;被除数低16位存入AXMOV BX,WORD PTR DIVISOR ;除数存入BXDIV BX ;除法CMP FLAG,1JE NEWPRINT QUOTIENT ;显示商MOV BX,AX CALL DISPLAYPRINT ENTERPRINT REMAINER ;显示余数MOV BX,DXCALL DISPLAYPRINT ENTERFINISHED: POP AX ;恢复原0号中断MOV WORD PTR ES:0002H,AXPO

38、P AXMOV WORD PTR ES:0000H,AXMOV AH,4CH ;返回DOSINT 21H ;*结果显示*DISPLAY PROC NEARPUSH CXMOV CX,16 ;循环16次;CLCHEAR1:SHL BX,1 JNC PRINT0MOV DL,31H ;判为1时的输出MOV AH,02HINT 21H JMP AGAIN PRINT0:MOV DL,30HMOV AH,02HINT 21HAGAIN:LOOP HEAR1 PRINT TABPOP CXRETDISPLAY ENDP ;*扩展除法的输出*NEW:PRINT QUOTIENTMOV BX,CX CALL DISPLAYPRINT TABMOV BX,AXCALL DISPLAYPRINT ENTERP

温馨提示

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

评论

0/150

提交评论