首页 汇编语言实验

汇编语言实验

举报
开通vip

汇编语言实验实验一DEBUG命令实验一.实验目的:掌握DEBUG的基本命令及其功能二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG的主要命令汇编命令A,格式为:-A[地址];该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。例如:-a136B:0100movax,100136B:0103movbx,200136B:0106movcx,300136B:0109movdx,400136B:010...

汇编语言实验
实验一DEBUG命令实验一.实验目的:掌握DEBUG的基本命令及其功能二.实验 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 :DEBUG是专门为汇编语言 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG的主要命令汇编命令A,格式为:-A[地址];该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。例如:-a136B:0100movax,100136B:0103movbx,200136B:0106movcx,300136B:0109movdx,400136B:010C-反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。例如:-u2)-U范围该命令对指定范围的内存单元进行反汇编,例如:运行命令G,格式为:-G[=地址1][地址2[地址3。。。]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。例如:追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址];该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。2)多条指令追踪:-T[=地址][值],该命令从指定地址起执行n条命令后停下来,n由[值]确定。显示内存单元内容的命令D,格式为:-D[地址]或-D[范围]修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 例如:-E2000:0100F3“XYZ”8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元049e:0005到0008的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。2)逐个单元相继地修改:-E地址例如:此命令是将原5号单元的内容f3改为89>89是程序员键入的。检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-RR命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位AuxiliaryCarry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC2)显示和修改某个指定寄存器内容,格式为:-R寄存器名例如打入:-RAX表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-RBXBX0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OVDNEINGZRACPECY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如OVDNEINGZRACPECY-PONZDINV三、实验任务参照附录1,掌握DEBUG程序的各种命令,重点是命令R,D,A,U,T,P,G命令的使用。用命令A汇编下列指令,判断指令正误并说明原因。RORAX,8LEADI,[AX]MOVDS,2010PUSHALOUT900,ALMOV[BX],0用命令查看8086/8088CPU在开机后执行的第一条指令。用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM的区别。用A命令汇编一条INT1C指令,用命令T单步执行该指令,比较指令执行前后CS和IP、堆栈指针SP及堆栈内容变化情况,了解什么是中断向量表,中断向量和中断子程,掌握中断指令的执行过程。利用T,P,G命令,执行下列指令段,注意它们的不同之处。MOVDI,300MOVSI,400MOVCX,3CLDREPMOVSBINT3MOVAH,2MOVDL,41INT21INT3先在CS:200处汇编一条RET指令,再在CS:100处汇编。MOVBX,200CALLBXINT3然后从MOVBX,200处开始执行。实验三分支程序实验一、实验目的1)掌握分支程序的设计 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。2)掌握利用DEBUG修改参数、检查结果的方法。3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。二、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是0-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。1)显示AL中两位十六进制数程序:;DISPHEX.ASMCODESEGMENTASSUMECS:CODESTART:MOVAL,3EH00111110MOVBL,ALMOVDL,ALMOVCL,4SHRDL,CL逻辑右移4位,dl=00000011CMPDL,9比较JBENEXT1小于等于ADDDL,7NEXT1:ADDDL,30H00000011+00110000dl=33hMOVAH,2ah=00000010INT21H;显示高位ASCII码MOVDL,BLANDDL,0FH0ehCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21H;显示低位ASCII码MOVAH,4CHINT21HCODEENDS;返回DOSENDSTART2)显示键入字符程序;DISPKEY.ASMCODESEGMENTASSUMECS:CODESTART:MOVAH,1;1号功能调用INT21H;等待键入字符,送ALCMPAL,0DH;是否是回车符?JZDONE;是则转DONE退出程序CMPAL,’0’JANEXTCMPAL,’9’JBCHARUPMOVDL,ALMOVAH,2INT21H;显示0~9JMPSTARTCHARUP:CMPAL,41HJANEXTCMPAL,5AHJBCHRDNDISPC:MOVDL,’C’MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21H;返回DOSCODE:ENDSENDSTART首先运行程序:对程序进行但不执行,了解程序的运行过程:程序流图:实验四循环程序实验一、实验目的:1)掌握循环程序的设计方法2)进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。3)学会针对不同的问题,选用不同的组织循环的方法。二、实验内容1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“1”而加上了校验位。统计结果存于N单元中。2)存储单元DAT1及DAT2中各有10字节的二进制数,高位字节放在高位地址中。试编写一程序将这两个数据相加,结果存放在从DAT3开始的单元中。1)偶校验程序清单:;EX56.ASMDESGSEGMENTSTRNDB‘ASCDEfghijkLMNOPQuvw’,‘$’NDB?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,STRNMOVDL,0AGAIN:MOVAL,[SI]CMPAL,‘$’JEDONETESTAL,0FFHJPENEXTORAL,80HMOV[SI],ALINCDLNEXT:INCSIJMPAGAINDONE:MOVN,DLMOVAH,4CHINT21HCSEGENDSENDSTART;以上是条件控制的循环。因为事先不知道字符串STRN共有多少字符,故采用条件控制的循环程序实现。可以看出,有十个字符进行了偶校验2)加法程序清单:;ADDHEX.ASMCODESEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,CSMOVDS,AXLEASI,DAT1LEADI,DAT2LEABX,DAT3MOVCX,10XORAL,AL;0→CFAGAIN:MOVAL,[SI]ADCAL,[DI]MOV[BX],ALINCSIINCDIINCBXLOOPAGAINMOVAH,4CHINT21HDAT1DB70H,80H,90H,A0H,A1H,A2H,A3HDB74H,65H,56HDAT2DB45H,67H,89H,1AH,2BH,3CHDB4DH,5EH,6FH,04HDAT3DB10DUP(?)CODEENDSENDSTART;本程序中,DS及CS同处一个逻辑段CODE中,所以,应将CS值送至DS中。相当于计算实验五子程序实验(1)一、实验目的1)掌握主程序与子程序之间的调用关系及调用方法。2)掌握子程序调用过程中近程调用与远程调用的区别。3)掌握通过堆栈转送参数的方法。二、实验内容1)将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。在转换过程中,通过子程序DISP实现显示。2)编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。1)码型转换程序清单:;CONV.ASMDATASEGMENTBUFDB0ABH,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,0FHCALLDISP;显示低位HEX数RETHEXASCENDPDISPPROPCMPDL,9JBENEXTADDDL,7NEXT:ADDDL,30H;将一位HEX数转为ASCII码MOVAH,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,2INT21H;显示待检字符MOVDL,ALANDDL,0FHCMPDL,9JBENEXTADDDL,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],AXPOPBPRET.4CHECKENDPENDSTART实验六子程序实验(2)本实验目的在于使读者掌握模块间调用子程序的编写方法。一、实验目的(1)了解多模块程序设计方法。(2)学会使用PUBLIC和EXTRN伪指令解决模块间的符号(如变量名、标号等)通信题。二、实验内容(1)编写一个子程序,将主程序敲定的内存中字符串的小宝字母转换成大写字母并显示出来。主程序用另一个模块编写。(2)编写一个子程序,将主程序指定的字符所在的地址值返回给主程序,字符串与主程序在同一个模块。(1)转换字符串小写字母为大写字母的程序清单:;EXCHAR.ASM为主模块的文件名EXTRNDNTOUP:FARPUBLICSTRING1,STRING2DATASEGMENTSTRING1DB'ThisisaBook','$'STRING2DB80DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCALLDNTOUPMOVAH,4CHINT21HCODEENDSENDSTART;DNTOUP.ASM为子模块的文件名PUBLICDNTOUPEXTRNSTRING1:BYTE,STRING2:BYTECODESEGMENTASSUMECS:CODEDNTOUPPROCFARMOVBX,0CYCLE:MOVAL,STRING1[BX]CMPAL,24H;是否是STRING1结尾JZDONE;是“$”,转DONECMPAL,61H;是否是小写字母JBNEXT;不是转NEXTCMPAL,7AHJANEXTSUBAL,20H;转为大写字母NEXT:MOVSTRING2[BX],ALINCBXJMPCYCLEDONE:MOVAL,'$'MOVSTRING2[BX],AL;补一个$MOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21H;显示回车。换行LEADX,STRING1MOVAH,9INT21H;显示源串内容MOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21H;回车换行MOVDX,OFFSETSTRING2MOVAH,9INT21H;显示转换后的大写串RETDNTOUPENDPCODEENDSEND(2)查找指定字符,并返回地址值的程序清单:;MAINP.ASM为主模块程序名EXTRNFINDC:FARPUBLICSTRNDATASEGMENTSTRNDB'LINKDISPLAYSUBROUNTINE$'ADDRDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,1INT21HCALLFINDCMOVADDR,DIMOVAH,4HINT21HCODEENDSENDSTART;FINDC.ASM为子模块程序名PUBLICFINDCEXTRNSTRN:BYTECODESEGMENTLEADI,STRNAGAIN:CMPBYTEPRT[DI],'$'JZDONECMPAL,[DI]JNZNEXTDONE1:RETNEXT:INCDIJMPAGAINDONE:MOVDI,0FFFFH;找不到返回0FFFFHJMPDONE1FINDCENDPCODEENDSEND得不到返回的地址值,修改主程序;codesegmentassumecs:code,ds:datastart:movax,datamovds,axmovah,1int21hcallfindcmovadddr,di;改名movdl,0ah;显示回车movah,2int21hmovdl,0dhint21hmovdx,dimovch,4;显示4位movcl,4lop:roldx,clpushdxanddl,0fhcmpdl,9jbeskipadddl,7skip:adddl,30hint21hpopdxdecchjnzlopmovdl,‘h’;显示hint21hmovah,4chint21hcodeendsendstart(3)若由键盘输入字符串,则可在程序1的主模块的DATA段中加一行提示信息IMAGE:IMAGEDB’INPUTASTRINGPLEASE:$’然后在主模块的CALL指令前插入以下程序段:LEADX,IMAGEMOVAH,9INT21HLEADX,STRING2+1MOVAH,0AHINT21H;将键入串存入STRING2LEASI,STRING2+2MOVCL,STRING2+1MOVCH,0LEADI,STRING1AGAINMOVAL,[SI]MOV[DI],ALINCSIINCDILOOPAGAINMOVBYTEPTR[DI],'$';补一个$说明:此处先将键入存入STRING2,然后再将其部分传送到STRING1中。当然在定义STRING2时,应为:STRING2DB80,?80DUP(?)。
本文档为【汇编语言实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
慢慢老师
暂无简介~
格式:doc
大小:619KB
软件:Word
页数:37
分类:工学
上传时间:2022-01-20
浏览量:0