汇编语言实验指导书

上传人:沈*** 文档编号:91395394 上传时间:2022-05-17 格式:DOC 页数:27 大小:274KB
返回 下载 相关 举报
汇编语言实验指导书_第1页
第1页 / 共27页
汇编语言实验指导书_第2页
第2页 / 共27页
汇编语言实验指导书_第3页
第3页 / 共27页
点击查看更多>>
资源描述
汇编语言实验指导书前 言汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。本实验指导书按照汇编语言程序设计的教学大纲要求编写。依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。通过这种既具有构造性又具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。为了帮助老师和学生开展实验,我们特编了这本实验指导书,希望能对我校的汇编语言教学工作有所帮助。本实验指导书所有实例均在PC机上调试通过。目 录实验1 利用DEBUG调试汇编语言程序段3实验2 汇编语言程序上机过程10实验3 分支程序实验12实验4 循环程序实验15实验5 子程序实验16实验6 字符处理程序实验20实验7 排序程序设计24实验8 计算机钢琴程序26实验9 键盘和窗口程序28实验10 磁盘文件操作程序31实验1 利用DEBUG调试汇编语言程序段一实验目的1熟悉DEBUG有关命令的使用方法;2利用DEBUG掌握有关指令的功能;3利用DEBUG运行简单的程序段。二实验内容1进入和退出DEBUG程序;1开始运行,输入cmd,点确定进入命令窗口2在命令窗口中输入dubug进入debug程序3进入debug窗口后,输入q命令退出debug2学会DEBUG中的1D命令显示内存数据D 段地址:偏移地址例1:-D100 ;显示DS段, 0100开始的128个字节内容说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 DSEGREG起始地址 L 长度;显示SEGREG段中, 以起始地址 ,开始的L 长度 个字节的内容. D SEGREG段地址:偏移地址;显示SEGREG段中, 段地址:偏移地址 开始的L 长度 个字节内容D;默认段寄存器为DS,当前偏移地址D DS:100 ;显示DS段, 0100H开始的128个字节内容D CS:200 ;显示CS段, 0200H开始的128个字节内容D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容D 200;显示DS段, 0200H开始的128个字节内容D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2E命令修改指定内存例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2: -E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。 E 地址;从指定地址开始,修改或连续修改存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。 E 地址 数据表;从指定的地址开始用数据表给定的数据修改存储单元。E DS:100 F3 AB 8D ; 把DS段中0100H开始的四个字节修改为F3 AB 8D也可以按下面的方式实现3R命令显示当前寄存器的内容显示修改寄存器命令RR;显示所有寄存器和标志位状态;显示当前CS:IP指向的指令。显示标志时使用的符号:标志标志=1标志=0 OFOVNV DFDNUP IFEIDI SFNGPL ZFZRNZ AFACNA PFPEPO CFCYNC4T命令设置陷井,单步执行 T;从当前IP开始执行一条指令。 T 数值;从当前IP开始执行多条指令, 数值:执行的指令条数。 T =地址;从给定的地址执行一条指令 T =地址数值;从给定的地址执行多条指令, 数值:执行的指令条数.T ; 从当前IP开始执行一条指令T5 ; 从当前IP开始执行5条指令T=1005 ; 从当前0100H开始执行5条指令5A命令将指令直接汇编成机器码输入到内存中。汇编命令AA 地址;从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始通常是CS:100。注释:在DEBUG下编写简单程序即使用A命令。每条指令后要按回车。不输入指令按回车,或按Ctrl+C结束汇编。支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al单步执行上述指令6G命令等的使用执行A命中输入的汇编指令运行程序命令G G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。 G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。 G 断点1,断点2,断点10;从CS:IP指向的指令开始执行程序,直到遇到断点。G=地址断点1,断点2,断点10G ;从CS:IP指向的指令开始执行程序。G=100 ;从指定地址开始执行程序。G=100 105 110 120使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al int 3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行3用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。三实验要求1仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1在DOS提示符下,进入DEBUG程序;2在DOS目录下启动DEBUG;3详细记录每一步所用的命令,以及查看结果的方法和具体结果。六实验报告要求1如何启动和退出DEBUG程序;2整理每个DEBUG命令使用的方法,实际示例及执行结果。实验2汇编语言程序上机过程一实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 二实验内容1掌握常用的编辑工具软件如WORD、EDIT、MASM和LINK的使用;2伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3利用的INT 21H的1号功能实现键盘输入的方法;三实验要求1仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;3阅读下面程序段。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM。EXE,LINK。EXE,DEBUG。COM或宏汇编集成环境五实验步骤程序:datasegmentmessagedbThis is a sample program of keyboard and displydb0dh,0ah,Please strike the key!,0dh,0ah,$dataendsstacksegmentpara stack stackdb50 dupstackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offset messagemovah,9int21h ;显示This is a sample program of keyboard and displyagain:movah,1int21h ;等待键盘输入,保存至ALcmpal,1bh ;1bh 字符ESC的ASCIIjeexitcmpal,61h ;61h字符a的ASCIIjcnd ;小于CF=1有借位转向ND原样显示cmpal,7ah ;jand ;大于转向ND原样显示andal,11011111b ;转化为大写字母 sub al,20hnd:movdl,almovah,2int21hjmpagainexit:movah,4chint21hcodeendsendstart实验步骤:1用用文字编辑工具记事本或EDIT将源程序输入,其扩展名为ASM。2用MASM对源文件进行汇编,产生OBJ文件和LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3用TYPE命令显示1产生的LST文件。4用LINK将OBJ文件连接成可执行的EXE文件。5在DOS状态下运行LINK产生的EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。六实验报告要求汇编,连接及调试时产生的错误,其原因及解决办法。实验3 分支程序实验一实验目的1 掌握分支程序的设计方法;2 掌握利用DEBUG修改参数、检查结果的方法;1 熟悉汇编语言源程序的编辑、汇编、连接及调试过程。二实验内容1编写一个程序,显示AL寄存器中的两位十六进制数2编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示c;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。三实验要求1编写实验内容要求的两个程序;2写出调试以上程序,即修改程序参数,检查结果的操作方法;3熟悉源程序汇编、连接命令的使用方法即要回答的内容。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2对其进行汇编及连接,产生.EXE文件。3对.EXE文件进行调试运行。1用DEBUG调试运行,学会修改AL内容的方法;2对DSPKEY.EXE键入不同的字符,分别进行调试;3在MS-DOS下运行这两个.EXE文件。六实验报告要求1画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。2说明本实验是如何利用DEBUG进行调试的。七思考题编写显示AX中四位十六进制数程序,画出程序的流程图。实验参考程序清单 显示AL中两位十六进制数程序:;DISPHEX.ASMCODE SEGMENTASSUME CS:CODESTART:MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9E NEXT1ADD DL,7NEXT1:ADD DL,30HMOV AH,2INT 21H ;显示高位ASCII码MOV DL,BLAND DL,0FHCMP DL,9E NEXT2ADD DL,7NEXT2:ADD DL,30HMOV AH,2INT 21H ;显示低位ASCII码MOV AH,4CHINT 21HCODE ENDS ;返回DOSEND START 显示键入字符程序;DISPKEY.ASMCODE SEGEMENTASSUME CS:CODESTART: MOV AH,1INT 21H ;等待键入字符,送ALCMP AL,0DH ;是否是回车符?JZ DONE ;是则转DONE退出程序CMP AL,0 NEXTCMP AL,9JA CHARUPMOV DL,ALMOV AH,2INT 21HJMP STARTCHARUP:CMP AL,41H NEXTCMP AL,5AHJA CHRDNDISPC: MOV DL,CMOV AH,2INT 21HNEXT: JMP STARTCHRDN:CMP AL,61H NEXTCMP AL,7AHJA NEXTJMP DISPCDONE: MOV AH,4CHINT 21HCODE: ENDSEND START实验4 循环程序实验一实验目的1掌握循环程序的设计方法;2学会针对不同的问题,选用不同的组织循环的方法;3进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。二实验内容1编写一个程序,显示BX寄存器中的两位十六进制数;2编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示c;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。三实验要求1编写实验内容要求的两个程序;2写出调试以上程序,即修改程序参数,检查结果的操作方法;3熟悉源程序汇编、连接命令的使用方法即要回答的内容。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;2对其进行汇编及连接,产生.EXE文件;3对.EXE文件进行调试运行。1用DEBUG调试运行,学会修改AL内容的方法;2对DSPKEY.EXE键入不同的字符,分别进行调试;3在MS-DOS下运行这两个.EXE文件。六实验报告要求画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。七思考题编写一循环程序,测量一字符串长度,并用16进制数显示之。实验5 子程序实验一实验目的1掌握主程序与子程序之间的调用关系及调用方法;2掌握子程序调用过程中近程调用与远程调用的区别;3掌握通过堆栈转送参数的方法。二实验内容1将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。2编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符b的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符b.子程序返回字符b的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符b及其个数。三实验要求1第一个实验程序用子程序的近程调用实现。由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。2第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。3第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数此处是串首址TABLE,串的长度N及待统计的字符b顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。4预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图;熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1编辑、汇编两个源程序,生成相应的可执行文件.EXE2用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3检查程序执行的结果是否正确。六实验报告要求1说明用堆栈传送参数的过程及其具体方法。2分析实验结果及所遇到问题,并说明解决的方法。七思考题分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。参考程序清单1码型转换程序清单:;CONV.ASNDATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFAGAIN: MOV AL,BXCALL HEXASCINC BXLOOP AGAINMOV AH,4CHINT 21HHEXASC PROC NEARMOV DL,ALPUSH CXMOV CL,4SHR DL,CLPOP CXCALL DISP ;显示高位HEX数MOV DL,ALAND DL,0FHCALL DISPRETHEXASC ENDPDISP PROP CMP DL,9E NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21H ;显示RET DISP ENDPCODE ENDSEND START2统计并显示某键入字符的个数的程序:;COUNTER.ASMDATA SEGMENTCHAR DB bBUF DB 50H,? ,50H DUPDATA ENDS MCODE SEGMENTASSUME CS: MCODE, DS: DATASTART: MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HLEA SI BUF MOV CL, SI+1MOV CH, 0 ;CX中为字符串长度INC SI INC SI ;SI指向串首址TABLEMOV AL,CHARMOV AH,0 ;AX中为待查字符PUSH SIPUSH CXPUSH AX; 参数送堆栈CALL CHECKPOP AX :统计个数在AL中MOV DL,CHARMOV AH,2INT 21HMOV DL,ALAND DL, 0FHCMP DL,9E NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2 INT 21H ;显示统计个数MOV AH,4CHINT 21HM CODE ENDSSCODE SEGMENTASSUME CS:SCODECHECK PROC FARPUSH BPMOV BP,SPMOV SI,BP+10MOV CX, BP+8MOV AX, BP+6XOR AH, AHAGAIN: CMP AL.SIJNE NEXT1INC AHNEXT1: INC SILOOP AGAINMOV AL, AHMOV BP+10,AXPOP BPRET 4CHECK ENDPEND START实验6 字符处理程序实验一. 实验目的1熟悉串操作指令的功能与应用;2掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。二实验内容1字符串统计。自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。2在给定的字符串中,删除重复的字符,其余的字符向前递补。三. 实验要求1认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。2按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。2删除字符串中重复字符,要求编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。六实验报告要求1、对照参考程序,画出程序流程图。2、总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。七思考题编写程序,在一个字符串中查找匹配字符。参考程序清单1统计小写字母个数的程序清单:;COUNTDC.ASMDATA SEGMENTSTRN DB 80 DUPDATAENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXLEA DI, STANMOV CL, 0AGAIN: MOV AH, 1 INT 21HCMP AL,0DHJZ DONEMOV DI,ALINC DIINC DLJMP AGAINDONE: LEA SI,STRNMOV CH,0MOV BL,0CLDCYCLE:LODSB CMP AL,61HCMP AL,7AHJA NEXTINC BLNEXT: LOOP CYCLEMOV AL,BLMOV AH,0MOV CL,10DIV CL ;十位数在AL中,个位数在AH中XCHG AH,AL ;以下显示两位十进制数MOV DL,AHOR DL,30HINT 21HMOV DL,ALOR DL,30HMOV AH,2INT 21HMOV DL,ALOR DL,30HINT 21HMOV DL,ALOR DL,30HINT 21HMOV AH,4CHINT 21HCODEENDSEND START2删除字符串中重复字符的源程序清单:;DELD.ASMDATA SEGMENTSTAN DB 80 DUPLEN DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE,DS: DATA,ES: DATAATART: MOV AX, DATAMOV DS,AXMOV ES,AXLEA SI,STRNMOV CL,0AGAIN: MOV AH,1INT 21HCMP AL,0DHJZ DONEMOV SI,ALINC SIINC CLJMP AGAINDONE:MOV CH,0MOV LEN,CLREPEAT: PUSH SIPUSH CX ;CX为内循环记数PUSH CX ;DX为外循环记数POP DXDEC CX JE NEXT1 ;是最后一个字符,不再查找重复字符MOV AL,SICMP AL,0JE NEXT1COMP: INC SI CMP AL,SIJNE GOON ;为非重复字符MOV BUTE PTRSI,0GOON: LOOP COMP ;查出与该字符重复的所有字符,并用0替换NEXT1:POP DXPOP SIDEC DXJNZ REPEAT ;对所有重复字符都进行查找 LEA SI,STRN ;删除重复字符MOV CL,LENMOV CH,0CYCLE: MOV AL,SICMP AL,0 ;是重复字符吗?JNZ NEXT ;不是,查找下一个字符DEC CX ;递补字串长度送CXJZ DONE;若是最后字符不递补CALL DELE ;删除该空字符并递补DEC SI ;对递补子串从头处理NEXT: INC SILOOP CYCLEMOV AH,4CHINT 21HDELE PROCPUSH SIPUSH CXCLDMOV DI,SI ;空字符处为目的首址INC SI ;下一个地址为源串首址REP MOVSBPOP CXPOP SI RETDELE ENDPCODE ENDS END START实验7 排序程序设计一实验目的掌握数据排序的一些常用算法,了解数列的有序、无序、升序和降序的概念。二实验内容使用冒泡排序法,将内存中10个数据由小到大排序每个数为16位二进制;三实验要求1复习排序的几个基本算法;2准备数据,按选择好的算法编写源程序。数据以DW定义和键盘输入两种方法提供。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1将编写好的源程序输入,建立源程序文件且存盘;2汇编、连接和运行此程序;3运行成功后,将程序的数据区建立方式改为键盘输入,由小到大排序改为由大到小排序,修改后重新调试、运行;4记录并分析排序的效率。六实验报告要求1对照参考程序,画出程序流程图。2说明所使用算法,是否为最优算法,与你知道的其它算法比较,指出它们的差别。七思考题如果要求显示排序结果,程序应如何修改?参考程序清单、code segmentorg100hassumecs:code,ds:codemain:jmpstartarraydw1234h,5673h,7fffh,8000h,0dffhdw0ab5h,0369h,005fh,5634h,9069hcountequ$-arraystart:movcx,countshrcx,1deccxmovbl,-1again:movdx,cxandbl,bljeexitxorbl,blxorsi,siagain1:movax,arraysicmpax,arraysi+2jlenchgxchgarraysi+2,axmovarraysi,axmovbl,-1nchg:incsiincsidecdxjnzagain1loopagainexit:int20hcodeendsendmain实验8 计算机钢琴程序一实验目的1掌握利用PC机扬声器发出不同频率声音的方法;2学习利用系统功能调用从键盘上读取字符的方法。二实验内容编写程序,使PC机成为一架可弹奏的钢琴。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调。当按下CTRL-C,则退出钢琴状态。三实验要求1了解PC机发音的原理;2编写发音程序。 PC机扬声器电路图如下:扬声器放大器与门61H端口第1位8253定时器261H端口第0位计数值地址42H 控制字先送低位,再送高位 地址43H通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调。要使音调的声音持续一端时间,只要插入一端延时程序之后,再将扬声器切断。另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系。键入字符12345678音 符12345678频率值5245886606987848809881048四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1将编写好的源程序输入,建立源程序文件且存盘;2汇编、连接和运行此程序;3运行成功后,改变常数或频率值,看看声音的变化。六实验报告要求1实验记录和体会。2自编程序。七思考题如果要演奏高音、低音,程序应如何修改?程序框图如下:设置8253计数器2的工作模式INT21H的01H号功能接收键入字符Y装入计数初值是CTRL-C?N结束键入字符值转化为查表偏移量送BX打开与门常数120000H被除数送DX,AX延迟一段时间查表得频率值作为除数关闭与门相除结果作为计数初值送BX实验9 键盘和窗口程序一实验目的1掌握利用INT 16H 2号功能调用实行键盘输入的方法;2熟悉键盘的扫描码和ASCII码的关系;3掌握利用INT 10H功能调用实现窗口功能的方法。二实验内容1编写键盘输入程序;2编写设置屏幕窗口程序。三实验要求1复习INT 16H 2号功能调用;2阅读键盘的扫描码和ASCII码的关系的内容;3复习INT 10H功能。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1将键盘输入程序输入,建立源程序文件且存盘;2汇编、连接、运行此程序,观察并记录各个键的扫描码,ASCII码及对应字符。汇编、连接和运行此程序;3将窗口程序输入,建立源程序文件且存盘;4汇编、连接、运行此程序,观察按不同键所产生的效果。六实验报告要求1对照参考程序,画出程序流程图。2记录程序运行结果。七思考题窗口程序所产生的窗口效果有何缺陷?试修改之。参考程序清单:1键盘输入程序PRO_NAMSEGMENTASSUMECS:PRO_NAMORG100HAGAIN:MOVAH,0INT16HMOVBX,AXCALLBINIHEXMOVAH,2MOVdl,20hINT21HMOVDL,BLMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HJMPAGAININT20HBINIHEXPROCNEARMOVCH,4ROTATE:MOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINTADDAL,7PRINT:MOVDL,ALMOVAH,2INT21HDECCHJNZROTATERETBINIHEXENDPPRO_NAMENDSENDAGAIN2窗口程序codesegmentassumecs:code,ss:codeorg100hstart:movax,600hmovcx,0movdx,184fhmovbh,7int10hpos:movah,2movdx,101ehmovbh,0int10hmovcx,20get:movah,1int21hcmpal,1bhjzexitloopgetmovax,601hmovcx,81ehmovdx,1031hmovbh,7int10hjmpposexit:int20hcodeendsendstart实验10 磁盘文件操作程序一实验目的1掌握利用FCB进行磁盘文件读写的方法;2掌握利用HANDLE进行磁盘文件读写的方法;3INT 21H的0FH、10H、14H、15H、16H、1AH号功能调用;4INT 21H的3CH、3DH、3FH、40H号功能调用。二实验内容1编写文本文件内容显示程序;2编写磁盘文件拷贝程序。三实验要求1复习INT 21H 0FH、10H、14H、15H、16H、1AH、3CH、3DH、3FH、40H号功能调用2阅读有关磁盘文件的FCB、HANDLE的内容。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1将文本文件内容显示程序输入,建立源程序文件且存盘;2输入,汇编,连接此程序,用DEBUG将目的程序带参数调入,用D命令观看并记录PSP中的FCB内容。3将磁盘文件拷贝程序输入,建立源程序文件且存盘;4汇编、连接、运行此程序,观察按不同键所产生的效果。六实验报告要求1对照参考程序,画出程序流程图;2实验中产生的问题及体会;3实验记录。七思考题按COPY AAA BBB 格式要求改写此程序,取消人机对话,源文件和目的文件名由命令行输入。参考程序清单:1.文本文件内容显示程序:stacksegmentstackdb100h dupstackendsdatasegmentfcbdb36 dupcountdb0chardb0dtadb0errmsgdbfile access errordataendscodesegmentmainprocfarassumecs:code,ss:stackstart:pushdssubax,axpushaxmovax,datamoves,axassumees:datamovsi,5chmovdi,offset fcbmovcx,12cldrepmovsbmovds,axassumeds:datamovdx,offset dtamovah,1ahint21hmovdx,offset fcbmovah,0fhint21hcmpal,0jnzerrormovword ptr fcb+0ch,0movword ptr fcb+0eh,1movfcb+20h,0again:leadx,fcbmovah,14hint21hcmpal,0jnzerrormoval,dtacmpal,1ahjzeofcmpal,9jztabcalldispcharinccharcmpdta,0ahjnzagainmovchar,0inccountcmpcount,24jnzagainmovah,0int16hmovcount,0jmpagaintab:moval, calldispcharincchartestchar,7jzagainjmptabeof:leadx,fcbmovah,10hint21hreterror:leabx,errmsgcalldisplayretdisplayprocmovcx,30disp1:moval,bxcalldispcharincbxloopdisp1moval,0dhcalldispcharmoval,0ahcalldispcharretdisplayendpdispcharprocpushbxmovbx,0movah,14int10hpopbxretdispcharendpmainendpcodeendsendstart2、磁盘文件拷贝程序:stacksegmentstackdb100h dupstackends;datasegmentsfiledb64db?db64 dupdfiledb64db?db64 dupask1db0ah,0dh,please input sourcedbfile name:,$ask2db0ah,0dh,please input destnationdbfile name:,$notedb0ah,0dh,please insert diskettesdband strike any when ready ,$er1db0ah,0dh,create error $er2db0ah,0dh,open error$er3db0ah,0dh,read error$er4db0ah,0dh,write error$er5db0ah,0dh,close source file errorer6db0ah,0dh,close dest file errorbufrdw?dataendscodesegmentassumecs:code,ds:data,ss:stackstartprocfarpushdssubax,axpushaxmovax,datamovds,axmoves,axleadx,ask1calldispleadx,sfilecallinptmovcl,sfile+1xorch,chmovsi,cxmovsi+sfile+2,0leadx,ask2calldispleadx,dfilecallinptmovcl,dfile+1xorch,chmovsi,cxmovsi+dfile+2,0leadx,notecalldispmovah,7int21hcallcopyretstartendpdispprocmovah,9int21hretdispendpinptprocmovah,0ahint21hretinptendpcopyprocmovah,3chleadx,dfile+2movcx,20hint21hleadx,er1movbx,axjcerrmovbufr,axmovah,3dhmoval,0leadx,sfile+2int21hleadx,er2movbx,axjcerrr_w:movcx,10hmovah,3fhleadx,sfile+2int21hleadx,er3jcerrorax,axjeexitmovah,40hleadx,sfile+2xchgbufr,bxint21hleadx,er4jcerrxchgbufr,bxjmpr_wexit:movah,3ehint21hleadx,er5jcerrxchgbufr,bxmovah,3ehint21hleadx,er6jcerrreterr:movah,3ehint21hxchgbufr,bxmovah,3ehint21hcalldispretcopyendpcodeendsendstart. .
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!