1、汇编实验报告 实验三 算术运算与代码转换程序设计一、实验目的 1)掌握算术运算程序的设计方法。2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用DEBUG调试程序。 二、实验内容1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏幕上。3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)
2、进制数。三、实验设备 PC机一台四、实验步骤 1) 按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。 4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。 5) 用D命令检查执行结果。 六、源程序实验一DATASEGMENTNUM1DB22H,33H,44H,55H,66H,77HNUM1LDB6HNUM2DB22H,22H,22H,22HNUM2LDB4HOUTCOME1DB10HDUP(0)OUTCOME2DB10HDUP(0)NDB0HDATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1EN
3、DSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVCH,0MOVSI,OFFSETNUM1MOVDI,OFFSETNUM2MOVAH,NUM1LMOVAL,NUM2LCMPAH,ALJAECHAXCHGSI,DIXCHGAH,ALCHA:SUBAH,AL MOVCL,ALCLCMOVBX,OFFSETOUTCOME1LOP1:MOVAL,DIPUSHCXMOVCL,SIADCCL,ALMOVBX,CLINCBXINCSIINCDIPOPCXLOOPLOP1MOVCL,AHJCXZLOP3LOP2:PUS
4、HCXMOVCL,BYTEPTRSIADCCL,0MOVBX,CLPOPCXINCBXINCSILOOPLOP2LOP3:MOVCH,0MOVSI,OFFSETNUM1MOVDI,OFFSETNUM2MOVAH,NUM1LMOVAL,NUM2LCMPAH,ALJAECHA1XCHGSI,DIXCHGAH,ALCHA1:SUBAH,ALMOVCL,ALCLCMOVBX,OFFSETOUTCOME2LOP11:MOVAL,DIPUSHCXMOVCL,SISBBCL,ALMOVBX,CLINCBXINCSIINCDIPOPCXLOOPLOP11MOVCL,AHJCXZLOP7LOP21:PUSHCX
5、MOVCL,BYTEPTRSISBBCL,0MOVBX,CLPOPCXINCBXINCSILOOPLOP21LOP7:MOVDI,OFFSETOUTCOME1ADDDI,10HMOVCX,11HLOP4:MOVDL,DIDECDICMPN,0HJNELOP5CMPDL,0HJELOP9LOP5:PUSHDXPUSHCXMOVCL,4HSHRDL,CLPOPCXCMPDL,9HJBELOP6ADDDL,7HLOP6:ADDDL,30HMOVAH,2INT21HMOVN,1HPOPDXANDDX,0FHCMPDL,9HJBELOP8ADDDL,7HLOP8:ADDDL,30HMOVAH,2INT2
6、1HMOVDL,HMOVAH,2INT21HLOP9:LOOPLOP4MOVN,0MOVDI,OFFSETOUTCOME2ADDDI,10HMOVCX,11HLOP14:MOVDL,DIDECDICMPN,0HJNELOP15CMPDL,0HJELOP19LOP15:PUSHDXPUSHCXMOVCL,4HSHRDL,CLPOPCXCMPDL,9HJBELOP16ADDDL,7HLOP16:ADDDL,30HMOVAH,2INT21HMOVN,1HPOPDXANDDX,0FHCMPDL,9HJBELOP18ADDDL,7HLOP18:ADDDL,30HMOVAH,2INT21HMOVDL,HM
7、OVAH,2INT21HLOP19:LOOPLOP14MOVAH,4CHINT21HCODEENDSENDSTART实验2DATASEGMENTTISHI1DBPleaseenterthefirstnumber:,$TISHI2DBPleaseenterthesecondnumber:,$JIADB+,$JIANDB-,$CHENGDB*,$CHUDB/,$DENGDB=,$YUDB.,$ADB10BDW10CDW10000FDW0HNUM1DW0HNUM2DW0HNDB0HN1DB4HDATAENDSSTACK1SEGMENTSTACKDW30HDUP(0)STACK1ENDSCODESSE
8、GMENTASSUMECS:CODES,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETTISHI1MOVAH,09HINT21HLOOP2:MOVAX,NUM1MULBMOVBX,AXMOVAH,1INT21HCMPAL,0DHJELOP1MOVNUM1,BXMOVAH,0SUBAL,30HADDNUM1,AXJMPLOOP2 LOP1:MOVDL,0AH输出换行和回车 MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVDX,OFFSETTISHI2MOVAH,09HINT21HLOOP1:MOVAX,NUM2MULB MOVB
9、X,AXMOVAH,1INT21HCMPAL,0DHJELOP3MOVNUM2,BXMOVAH,0SUBAL,30HADDNUM2,AXJMPLOOP1LOP3:MOVDL,0AH输出换行和回车 MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVN,0MOVDX,NUM1MOVF,DXLOP6:MOVDX,0HMOVAX,FDIVBPUSHDXINCN CMPAX,0HJELOP7MOVF,AXJMPLOP6LOP7:MOVCL,NMOVCH,0LOP16:POPDXADDDX,30HMOVAH,2INT21HLOOPLOP16MOVDX,NUM2MOVF,DXMOV
10、N,0MOVDX,OFFSETJIAMOVAH,09HINT21HLOOOP6:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOOP7MOVF,AXJMPLOOOP6LOOOP7:MOVCL,NMOVCH,0LOOOP16:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOOP16MOVDX,OFFSETDENGMOVAH,09HINT21HMOVN,0LOOP3:MOVAX,NUM1ADDAX,NUM2MOVF,AXLOOP4:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOP5MOVF,AXJMPLO
11、OP4LOOP5:MOVCL,NMOVCH,0LOOP0:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP0MOVDL,0AH输出换行和回车 MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVN,0MOVDX,NUM1MOVF,DXLOP61:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOP71MOVF,AXJMPLOP61LOP71:MOVCL,NMOVCH,0LOP161:POPDXADDDX,30HMOVAH,2INT21HLOOPLOP161MOVDX,NUM2MOVF,DXMOVN,0MOVDX,OF
12、FSETJIANMOVAH,09HINT21HLOOOP61:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOOP71MOVF,AXJMPLOOOP61LOOOP71:MOVCL,NMOVCH,0LOOOP161:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOOP161MOVDX,OFFSETDENGMOVAH,09HINT21HMOVN,0MOVN,0MOVAX,NUM1SUBAX,NUM2MOVF,AXANDAX,10000000BCMPAX,10000000BJNELOOP6NEGFLOOP6:MOVDX,0MOVAX,FDIVB
13、PUSHDXINCNCMPAX,0HJELOOP7MOVF,AXJMPLOOP6LOOP7:MOVCL,NMOVCH,0LOOP16:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP16MOVDL,0AH输出换行和回车MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVN,0MOVDX,NUM1MOVF,DXLOP62:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOP72MOVF,AXJMPLOP62LOP72:MOVCL,NMOVCH,0LOP162:POPDXADDDX,30HMOVAH,2INT21HLOO
14、PLOP162MOVDX,NUM2MOVF,DXMOVN,0MOVDX,OFFSETCHENGMOVAH,09HINT21HLOOOP62:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOOP72MOVF,AXJMPLOOOP62LOOOP72:MOVCL,NMOVCH,0LOOOP162:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOOP162MOVDX,OFFSETDENGMOVAH,09HINT21HMOVN,0MOVAX,NUM1MULNUM2DIVCPUSHDXMOVF,AXMOVN,0LOOP8:MOVDX,0MOVAX,F
15、DIVBPUSHDXINCNCMPAX,0HJELOOP9MOVF,AXJMPLOOP8LOOP9:MOVCL,NMOVCH,0LOOP17:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP17MOVN,0POPFLOOP10:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOP11MOVF,AXJMPLOOP10LOOP11:MOVAL,NCMPAL,4HJELOOP20MOVAL,4HSUBAL,NMOVCL,ALMOVCH,0LOOP19:MOVDX,0MOVAH,2INT21HLOOPLOOP19LOOP20:MOVCL,NMOV
16、CH,0LOOP18:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP18MOVDL,0AH输出换行和回车MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVN,0MOVDX,NUM1MOVF,DXLOP64:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOP74MOVF,AXJMPLOP64LOP74:MOVCL,NMOVCH,0LOP164:POPDXADDDX,30HMOVAH,2INT21HLOOPLOP164MOVDX,NUM2MOVF,DXMOVN,0MOVDX,OFFSETchuMOVAH,09HIN
17、T21HLOOOP64:MOVDX,0HMOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOOP74MOVF,AXJMPLOOOP64LOOOP74:MOVCL,NMOVCH,0LOOOP164:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOOP164MOVDX,OFFSETDENGMOVAH,09HINT21HMOVN,0MOVAX,NUM1MOVDX,0DIVNUM2PUSHDXMOVF,AXMOVN,0LOOP15:MOVDX,0MOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOP12MOVF,AXJMPLOOP15LOOP12:M
18、OVCL,NMOVCH,0LOOP21:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP21MOVDX,OFFSETYUMOVAH,09HINT21HPOPFMOVN,0LOOP13:MOVDX,0MOVAX,FDIVBPUSHDXINCNCMPAX,0HJELOOP14MOVF,AXJMPLOOP13LOOP14:MOVCL,NMOVCH,0HLOOP22:POPDXADDDX,30HMOVAH,2INT21HLOOPLOOP22MOVAH,4CHINT21HCODESENDSENDSTART实验五 输入输出程序设计 一、实验目的 1) 掌握输入输出程序的编写方法。 2
19、) 熟悉系统功能调用的方法。 3) 熟悉动画程序的编写方法。 二、实验内容 1)在CRT上每隔一秒连续显示字符09。 编程提示 为了使输出的字符之间有空格,在每一个循环中输出一个09的字符和一个空格。为了输出09,置寄存器BL初值为0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND 0FH指令屏蔽高4位。 2)用系统功能调用将HELLO由键盘输入,再从屏幕输出*HELLO*。 3)编制在屏幕上画线的子程序,调用该子程序画一矩形。4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。5)创建一磁盘文件,保存从键盘输入的字符串。6
20、)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。三、实验设备 PC机一台 四、实验步骤 1)按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。 4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。5、源程序实验五 EXAM51 STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSCODE SEGMENT ASSUME
21、CS:CODE,SS:STACKSTART: MOV BL, 0 LP: MOV DL, 20H MOV AH, 2 INT 21H MOV AL, BL ADD AL, 0 DAA AND AL, 0FH MOV BL, AL PUSH BX OR AL, 30H MOV DL, AL MOV AH, 2 INT 21H MOV BX, 3E8H LP2: MOV CX, 176H ;延时1ms LP1: PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP BX INC BL JMP LPCODE ENDS END START执行程序EXAM51EXE,屏幕上依次循
22、环显示一个数字一个空格:0 1 2 3 4 5 6 7 8 9 实验五 EXAM5-2 STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUFF DB 6,7 DUP(?),$DATA ENDSINPUT MACRO BUFE MOV DX, OFFSET BUFE MOV AH, 0AH INT 21H ENDMPUTCHAR MACRO CHAR MOV DL, CHAR MOV AH, 02H INT 21H ENDMCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AX INPUT BUFF ;读取字符串BUFF PUTCHAR 0DH PUTCHAR 0AH ;光标另起一行 MOV CX, 0003HNEXT:PUTCHAR 2AH LOOP NEXT MOV CL, BUFF+1 SUB CH, CH MOV BX, OFFSET BUFF+2BEGIN: MOV AL, BX PUTCH
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1