![汇编语言实验指导书_第1页](http://file4.renrendoc.com/view/9f6b7abc296f441f78d2c6924b27e4b1/9f6b7abc296f441f78d2c6924b27e4b11.gif)
![汇编语言实验指导书_第2页](http://file4.renrendoc.com/view/9f6b7abc296f441f78d2c6924b27e4b1/9f6b7abc296f441f78d2c6924b27e4b12.gif)
![汇编语言实验指导书_第3页](http://file4.renrendoc.com/view/9f6b7abc296f441f78d2c6924b27e4b1/9f6b7abc296f441f78d2c6924b27e4b13.gif)
![汇编语言实验指导书_第4页](http://file4.renrendoc.com/view/9f6b7abc296f441f78d2c6924b27e4b1/9f6b7abc296f441f78d2c6924b27e4b14.gif)
![汇编语言实验指导书_第5页](http://file4.renrendoc.com/view/9f6b7abc296f441f78d2c6924b27e4b1/9f6b7abc296f441f78d2c6924b27e4b15.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..汇编语言实验指导书前言汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。本实验指导书按照汇编语言程序设计的教学大纲要求编写。依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。通过这种既具有构造性又具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。为了帮助老师和学生开展实验,我们特编了这本实验指导书,希望能对我校的《汇编语言》教学工作有所帮助。本实验指导书所有实例均在PC机上调试通过。目录TOC\o"1-1"\h\z实验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段中<缺省内默认为DS>,以[起始地址]<缺省内为当前的偏移地址>,开始的[L长度]<缺省内默认为128>个字节的内容.DSEGREG[段地址:偏移地址];显示SEGREG段中<缺省内默认为DS>,[段地址:偏移地址]开始的[L长度]<缺省内默认为128>个字节内容
-D
;默认段寄存器为DS,当前偏移地址<刚进入debug程序偏移地址为0100H>-DDS:100;显示DS段,0100H开始的128个字节内容-DCS:200;显示CS段,0200H开始的128个字节内容
-D200:100;显示DS段,0200:0100H开始的128个字节内容
-D200;显示DS段,0200H开始的128个字节内容
-D100L10;显示DS段,100H开始的100H个字节内容2E命令〔修改指定内存例1:-E1004142434448474645-D100,L08结果:08F1:01004142434448474645例2:-E100:08F1:01007642:42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。①E地址
;从指定地址开始,修改〔或连续修改存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。
②E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
-EDS:100F3‘AB’8D;把DS段中0100H开始的四个字节修改为F3‘AB’<A和B的ASCII码>8D也可以按下面的方式实现3R命令〔显示当前寄存器的内容显示修改寄存器命令R
R;★显示所有寄存器和标志位状态;
★显示当前CS:IP指向的指令。
显示标志时使用的符号:
标志
标志=1
标志=0
OF
OV
NV
DF
DN
UP
IF
EI
DI
SF
NG
PL
ZF
ZR
NZ
AF
AC
NA
PF
PE
PO
CF
CY
NC4T命令〔设置陷井,单步执行
①T;从当前IP开始执行一条指令。
②T数值;从当前IP开始执行多条指令,数值:执行的指令条数。
②T=地址;从给定的地址执行一条指令
③T=地址
数值;从给定的地址执行多条指令,数值:执行的指令条数.
-T;从当前IP开始执行一条指令
-T5;从当前IP开始执行5条指令-T=100
5;从当前0100H开始执行5条指令5A命令〔将指令直接汇编成机器码输入到内存中。汇编命令A
A[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始〔通常是CS:100。
注释:①在DEBUG下编写简单程序即使用A命令。
②每条指令后要按回车。
③不输入指令按回车,或按Ctrl+C结束汇编。
④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。使用A命令在0100H开始输入指令movax,10inccxmovbl,al单步执行上述指令6G命令等的使用〔执行A命中输入的汇编指令运行程序命令G
①G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT3。
②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。
③G断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。
④G=地址
断点1[,断点2,…断点10]
-G;从CS:IP指向的指令开始执行程序。
-G=100;从指定地址开始执行程序。-G=100105110120使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3然后使用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.利用的INT21H的1号功能实现键盘输入的方法;三.实验要求1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法;3.阅读下面程序段。四.实验环境PC微机DOS操作系统或Windows操作系统MASM。EXE,LINK。EXE,DEBUG。COM或宏汇编集成环境五.实验步骤程序:data segmentmessage db'Thisisasampleprogramofkeyboardanddisply'db0dh,0ah,'Pleasestrikethekey!',0dh,0ah,'$'data endsstack segment parastack'stack'db50dup<?>stack endscode segmentassume cs:code,ds:data,ss:stackstart: movax,datamovds,axmovdx,offsetmessagemovah,9int21h;显示'Thisisasampleprogramofkeyboardanddisply'again: movah,1int21h;等待键盘输入,保存至ALcmpal,1bh;1bh字符ESC的ASCIIjeexitcmpal,61h;61h字符a的ASCIIjc<>nd;小于〔CF=1有借位转向ND原样显示cmpal,7ah;jand;大于转向ND原样显示andal,11011111b;转化为大写字母subal,20hnd: movdl,almovah,2int21hjmpagainexit: movah,4chint21hcode endsendstart实验步骤:1.用用文字编辑工具〔记事本或EDIT将源程序输入,其扩展名为.ASM。2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3.用TYPE命令显示1产生的.LST文件。4.用LINK将.OBJ文件连接成可执行的.EXE文件。5.在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。六.实验报告要求汇编,连接及调试时产生的错误,其原因及解决办法。实验3分支程序实验一.实验目的掌握分支程序的设计方法;掌握利用DEBUG修改参数、检查结果的方法;熟悉汇编语言源程序的编辑、汇编、连接及调试过程。二.实验内容1.编写一个程序,显示AL寄存器中的两位十六进制数2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示"c";若是回车字符<CR><其ASCII码为0DH>,则结束程序,若为其它字符则不显示,继续等待新的字符输入。三.实验要求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中四位十六进制数程序,画出程序的流程图。实验参考程序清单<1>
显示AL中两位十六进制数程序:;DISPHEX.ASMCODESEGMENTASSUMECS:CODESTART:MOVAL,3EHMOVBL,ALMOVDL,ALMOVCL,4SHRDL,CLCMPDL,9ENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,2INT21H;显示高位ASCII码MOVDL,BLANDDL,0FHCMPDL,9ENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21H;显示低位ASCII码MOVAH,4CHINT21HCODEENDS;返回DOSENDSTART<2>
显示键入字符程序;DISPKEY.ASMCODESEGEMENTASSUMECS:CODESTART:MOVAH,1INT21H;等待键入字符,送ALCMPAL,0DH;是否是回车符?JZDONE;是则转DONE退出程序CMPAL,’0’NEXTCMPAL,’9’JACHARUPMOVDL,ALMOVAH,2INT21HJMPSTARTCHARUP:CMPAL,41HNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,’C’MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODE:ENDSENDSTART实验4循环程序实验一.实验目的1.掌握循环程序的设计方法;2.学会针对不同的问题,选用不同的组织循环的方法;3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。二.实验内容1.编写一个程序,显示BX寄存器中的两位十六进制数;2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示"c";若是回车字符<CR><其ASCII码为0DH>,则结束程序,若为其它字符则不显示,继续等待新的字符输入。三.实验要求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.ASNDATASEGMENTBUFDB0ABH,0CDH,0DEH,01H,02H,03HDB3AH,4BH,5CH,6FHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,10LEABX,BUFAGAIN:MOVAL,[BX]CALLHEXASCINCBXLOOPAGAINMOVAH,4CHINT21HHEXASCPROCNEARMOVDL,ALPUSHCXMOVCL,4SHRDL,CLPOPCXCALLDISP;显示高位HEX数MOVDL,ALANDDL,0FHCALLDISPRETHEXASCENDPDISPPROPCMPDL,9ENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT21H;显示RETDISPENDPCODEENDSENDSTART2.统计并显示某键入字符的个数的程序:;COUNTER.ASMDATASEGMENTCHARDB‘b’BUFDB50H,?,50HDUP<?>DATAENDSMCODESEGMENTASSUMECS:MCODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,BUFMOVAH,9INT21HLEASIBUFMOVCL,[SI+1]MOVCH,0;CX中为字符串长度INCSIINCSI;SI指向串首址TABLEMOVAL,CHARMOVAH,0;AX中为待查字符PUSHSIPUSHCXPUSHAX;参数送堆栈CALLCHECKPOPAX:统计个数在AL中MOVDL,CHARMOVAH,2INT21HMOVDL,ALANDDL,0FHCMPDL,9ENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT21H;显示统计个数MOVAH,4CHINT21HMCODEENDSSCODESEGMENTASSUMECS:SCODECHECKPROCFARPUSHBPMOVBP,SPMOVSI,[BP+10]MOVCX,[BP+8]MOVAX,[BP+6]XORAH,AHAGAIN:CMPAL.[SI]JNENEXT1INCAHNEXT1:INCSILOOPAGAINMOVAL,AHMOV[BP+10],AXPOPBPRET4CHECKENDPENDSTART实验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
DB80DUP<?>DATA
ENDSCODE
SEGMENT
ASSUMECS: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
21HCODEENDSENDSTART2.删除字符串中重复字符的源程序清单:;DELD.ASMDATA
SEGMENTSTAN
DB80DUP<?>LEN
DB?DATA
ENDSCODE
SEGMENTASSUMECS:CODE,DS:DATA,ES:DATA
ATART:MOV
AX,DATAMOV
DS,AXMOV
ES,AXLEA
SI,STRNMOV
CL,0AGAIN:MOV
AH,1INT21HCMP
AL,0DHJZ
DONEMOV
[SI],ALINC
SIINC
CLJMP
AGAINDONE:MOV
CH,0MOV
LEN,[CL]REPEAT:PUSHSIPUSHCX
;CX为内循环记数PUSHCX
;DX为外循环记数POP
DXDECCX
JE
NEXT1
;是最后一个字符,不再查找重复字符MOVAL,[SI]CMPAL,0JENEXT1COMP:
INCSI
CMPAL,[SI]JNEGOON
;为非重复字符MOVBUTEPTR[SI],0GOON:
LOOPCOMP
;查出与该字符重复的所有字符,并用0替换NEXT1:
POPDXPOPSIDECDX`JNZREPEAT
;对所有重复字符都进行查找LEASI,STRN
;删除重复字符MOVCL,LENMOVCH,0CYCLE:MOV
AL,[SI]
CMP
AL,0
;是重复字符吗?
JNZ
NEXT
;不是,查找下一个字符
DEC
CX
;递补字串长度送CX
JZ
DONE
;若是最后字符不递补
CALL
DELE
;删除该空字符并递补
DEC
SI
;对递补子串从头处理
NEXT:INC
SI
LOOP
CYCLE
MOV
AH,4CH
INT
21H
DELE
PROC
PUSH
SI
PUSH
CX
CLD
MOV
DI,SI
;空字符处为目的首址
INC
SI
;下一个地址为源串首址
REP
MOVSB
POP
CX
POP
SI
RETDELE
ENDP
CODE
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 segmentorg 100hassume cs:code,ds:codemain: jmp startarray dw 1234h,5673h,7fffh,8000h,0dffhdw 0ab5h,0369h,005fh,5634h,9069hcount equ $-arraystart: mov cx,countshr cx,1dec cxmov bl,-1again: mov dx,cxand bl,blje exitxor bl,blxor si,siagain1:mov ax,array[si]cmp ax,array[si+2]jle nchgxchg array[si+2],axmov array[si],axmov bl,-1nchg: inc siinc sidec dxjnz again1loop againexit: int 20hcodeendsend main实验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定时器2计数值〔地址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设置8253计数器2的工作模式INT21H的01H号功能接收键入字符Y装入计数初值是CTRL-C?N结束键入字符值转化为查表偏移量送BX打开与门常数120000H被除数送〔DX,AX延迟一段时间查表得频率值作为除数关闭与门相除结果作为计数初值送BX实验9键盘和窗口程序一.实验目的1.掌握利用INT16H2号功能调用实行键盘输入的方法;2.熟悉键盘的扫描码和ASCII码的关系;3.掌握利用INT10H功能调用实现窗口功能的方法。二.实验内容1.编写键盘输入程序;2.编写设置屏幕窗口程序。三.实验要求1.复习INT16H2号功能调用;2.阅读键盘的扫描码和ASCII码的关系的内容;3.复习INT10H功能。四.实验环境PC微机DOS操作系统或Windows操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五.实验步骤1.将键盘输入程序输入,建立源程序文件且存盘;2.汇编、连接、运行此程序,观察并记录各个键的扫描码,ASCII码及对应字符。汇编、连接和运行此程序;3.将窗口程序输入,建立源程序文件且存盘;4.汇编、连接、运行此程序,观察按不同键所产生的效果。六.实验报告要求1.对照参考程序,画出程序流程图。2.记录程序运行结果。七.思考题窗口程序所产生的窗口效果有何缺陷?试修改之。参考程序清单:1.键盘输入程序PRO_NAM SEGMENTASSUME CS:PRO_NAMORG 100HAGAIN: MOV AH,0INT 16HMOV BX,AXCALL BINIHEXMOV AH,2MOV dl,20hINT 21HMOV DL,BLMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HJMP AGAININT 20HBINIHEX PROC NEARMOV CH,4ROTATE: MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AHJL PRINTADD AL,7PRINT: MOV DL,ALMOV AH,2INT 21HDEC CHJNZ ROTATERETBINIHEX ENDPPRO_NAM ENDSEND AGAIN2.窗口程序code segmentassume cs:code,ss:codeorg 100hstart: mov ax,600hmov cx,0mov dx,184fhmov bh,7int 10hpos: mov ah,2mov dx,101ehmov bh,0int 10hmov cx,20get: mov ah,1int 21hcmp al,1bhjz exitloop getmov ax,601hmov cx,81ehmov dx,1031hmov bh,7int 10hjmp posexit: int 20hcode endsend start实验10磁盘文件操作程序一.实验目的1.掌握利用FCB进行磁盘文件读写的方法;2.掌握利用HANDLE进行磁盘文件读写的方法;3.INT21H的0FH、10H、14H、15H、16H、1AH号功能调用;4.INT21H的3CH、3DH、3FH、40H号功能调用。二.实验内容1.编写文本文件内容显示程序;2.编写磁盘文件拷贝程序。三.实验要求1.复习INT21H0FH、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.实验记录。七.思考题按COPYAAABBB格式要求改写此程序,取消人机对话,源文件和目的文件名由命令行输入。参考程序清单:1.文本文件内容显示程序:stack segment stackdb 100hdup<?>stack endsdata segmentfcb db 36dup<0>count db 0char db 0dta db 0errmsg db 'fileaccesserror'data endscode segmentmain proc farassume cs:code,ss:stackstart: push dssub ax,axpush axmov ax,datamov es,axassume es:datamov si,5chmov di,offsetfcbmov cx,12cldrep movsbmov ds,axassume ds:datamov dx,offsetdtamov ah,1ahint 21hmov dx,offsetfcbmov ah,0fhint 21hcmp al,0jnz errormov wordptrfcb+0ch,0mov wordptrfcb+0eh,1mov fcb+20h,0again: lea dx,fcbmov ah,14hint 21hcmp al,0jnz errormov al,dtacmp al,1ahjz eofcmp al,9jz tabcall dispcharinc charcmp dta,0ahjnz againmov char,0inc countcmp count,24jnz againmov ah,0int 16hmov count,0jmp againtab: mov al,'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红河云南红河个旧市人民医院党委办公室需招聘干事1名(2024年第28期)笔试历年参考题库附带答案详解
- 烟台2025年山东烟台龙口市结合事业单位招聘征集本科及以上学历毕业生入伍笔试历年参考题库附带答案详解
- 漯河2024年河南漯河市委社会工作部所属事业单位人才引进4人笔试历年参考题库附带答案详解
- 2025年中国双向手动打气筒市场调查研究报告
- 2025年中国R134a制冷压缩机市场调查研究报告
- 2025至2031年中国铸造平台行业投资前景及策略咨询研究报告
- 2025年美丽绒项目可行性研究报告
- 2025至2031年中国水电站调速系统液压站行业投资前景及策略咨询研究报告
- 2025年斜齿轮-螺旋锥齿轮减速电机项目可行性研究报告
- 2025年帽型磁芯项目可行性研究报告
- 四川省自贡市2024-2025学年上学期八年级英语期末试题(含答案无听力音频及原文)
- 2025-2030年中国汽车防滑链行业竞争格局展望及投资策略分析报告新版
- 2025年上海用人单位劳动合同(4篇)
- 二年级上册口算题3000道-打印版让孩子口算无忧
- 高中英语北师大版必修第一册全册单词表(按单元编排)
- 新教科版科学小学四年级下册全册教案
- 2024中考语文试卷及答案长沙
- 2024年高考生物总复习高中生物必修一全册重点知识梳理笔记(全册完整版)
- 商业综合体物业运营方案
- 2025年生物安全年度工作计划
- 乡镇卫生院2025年度工作计划
评论
0/150
提交评论