版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《汇编语言程序设计〔AssemblyLanguageProgramming〕计算机科学与技术系杨定安编写佛山科学技术学院摘 要汇编语言试验主要使学生把握DEBUG或DEB2023调试程序中各命令的使用方法,把握MASM汇编程序对汇编语言源程序进展编辑、汇编、连接、装配、调试到运行的上机操作方法。本试验大纲要求学生娴熟把握汇编语言指令练习、挨次程序设计、分支程序设计、循环程序设计和子程序设计。目录\l“_TOC_250004“试验一宏汇编程序〔MASM〕及汇编语言上机过程 3\l“_TOC_250003“试验二程序的根本构造练习 8试验三汇编编译器的使用及程序调试……………11试验四分支程序设计 17\l“_TOC_250002“试验五循环程序设计 19\l“_TOC_250001“试验六子程序设计 23\l“_TOC_250000“试验七汇编语言与C语言混合程序设计… 29试验一宏汇编程序〔MASM〕及汇编语言上机过程一、试验目的通过试验了解和生疏微机系统的配置。学习在DEBUG状态下输入汇编源程序的方法。初步把握调试(在DEBUG状态下)的过程。二、试验原理本试验要求在DEBUG状态下输入汇编源程序,DEBUG方法验证指令的功能。以下是给定的参考程序,并在试验时在每条指令的“;”符号右边按要求填写指令的执行结果。注:⑴微机进入DEBUG状态下之后,一切马上数和地址数据均被默认为十六进制数,在输入H⑵在DEBUG状态下执行程序时,“INT20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CSIP存放器原来的值。三、试验仪器微机一台,U盘一块。四、试验步骤开机和关机操作挨次开机:先翻开微机外部设备电源开关,如显示器,最终翻开主机电源开关。关机:与开机相反,先关掉主机电源开关,然后关闭全部外设的电源开关。装入DEBUG程序,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUWINDOWSCMDCDMASMDEB2023命令。一般C盘上装有DEBUGDEB2023软件,假设没有,可以用复制命令从其它盘拷贝过来,然后从装有DEBUG和DEB2023软件的磁盘上调用DEBUG和DEB2023软件程序。例如:C:\MASM> DEB2023↙(↙回车符)—(-DEBUG提示符)当显示器消灭提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进展操作。 用DEBUGRegister命令检查全部存放器内容,并作记录。命令格式:R[存放器名]检查和修改存放器内容的命令R,它有三种方式:标志名溢出Overflow〔是/否〕置位OV复位NV标志名溢出Overflow〔是/否〕置位OV复位NV方向Direction〔减量/增量〕DNUPInterrupt〔允许/屏蔽〕EIDISign〔负/正〕NGPLZero〔是/否〕ZRNZ关心进位AuxiliaryCarry〔是/否〕ACNA奇偶Parity〔偶/奇〕PEPO进位Carry〔是/否〕CYNC显示和修改某个指定存放器内容,格式为:-R存放器名例如打入:-RAX系统将响应如下:AX FIF4:AX当前内容为F1F4,此时假设不对其作修改,可按ENTER键,否则,打入修改后内容,如:-RBXBX0369:059F则BX内容由0369改为059F3〕显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OVDNEINGZRACPECY-这时假设不作修改可按ENTER键,否则在“-”号之后键入修改值,键入挨次任意。如OVDNEINGZRACPECY-PONZDINV 用DEBUGAssemble命令输入汇编源程序。格式:A[内存地址]注:用“[]”符号括起来的局部表示可以省略。该命令的功能是从指定的内存地址开头〔括号不要输入〕逐条输入汇编语言源程序并汇编成A命令最终一条指令之后输入汇编语句,假设没有用过A命令,则从CS:0100H地址开头输入。例如:-A0CD3:0100-在输入A命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。每条指令均用回车(↙)完毕。假设输入的指令有语法错误,DEBUG拒绝接收,并给出提示,此时可以重输入。程序的最终一条指令输入完之后,再按一次回车键(↙),即可完毕汇编命令,回到DEBUG提示符“-”状态。用DEBUGUnassemble命令反汇编。命令格式:U[起始地址[终止地址]]该命令的功能是从起始地址到终止地址反汇编目标码,缺省值是接上一个U命令或从CS:0100H地址开头。例如:-U显示器上将显示程序的内存地址、指令机器码的汇编源程序三列比照清单。用DEBUGTrace命令单步跟踪程序。命令格式:T[=起始地址][指令条数]留意:=符号不能缺该命令的功能是从指定的起始地址开头逐条执行指令,每执行完一条指令,屏幕显示全部存放器内容和下一条指令地址和指令。假设[=起始地址]缺省,T命令从CS:IP地址开头执行指令。例如:-T↙重复这一过程,即可看到每条指令执行后,查内存单元的数据,可用DEBUG的Dump命令,命令格式:D[起始地址[终止地址]]该命令的功能是从起始地址到终止地址,个D命令或从DS:0100H地址开头显示。例如:-D↙参考程序:MOVAX,2023;AL=MOVDS,AX;DS=NOTAX;AX=XORAX,AX;AX=DECAX;AX=INCAX;AX=MOVBX,2030;BH=MOVSI,BX;SI=MOV[SI],BL;[2030H]=MOVWORDPTR[SI],10F;[2030H]= [2031H]=MOVDI,SI;DI=MOV[DI+50],BH;[DI+50H]=MOVBH,[SI];BH=MOVBL,[DI+50];BL=MOVSP,5000PUSHAX;AX= [SS:4FFEH]= [SS:4FFFH]=PUSHBX;BX= [SS:4FFCH]= [SS:4FFDH]=POPAX;AX=POPF;F=NEGBX;BX=XCHG BX,AX;BX=STD;F=STI;F=CLD;F=CLIADC DI,2050;F=;DI=F=ADC SP,DI;SP=F=ADC AX,1500;AX=F=SUB AX,BXSHL AH,1;AX=;AH=BX=RCL AX,1SHR BH,1RCR BL,1MOV CL,4MOV DX,80F0ROL DX,CL;AX=;BH=;BL=;DX=CL=INT 20;CS=IP=五、试验报告要求整理每条指令执行的结果,填到打印清单的右半局部(应留意内存数据检查的正确性)。比较试验记录与理论分析的结果是否一样,假设有不同,找出差异及问题所在。总结本次试验的体会。一、试验目的生疏IBMPC机的根本指令。连续生疏计算机键盘及各功能键〔参阅DOS操作手册。连续学习DEBUG命令。验证指令的功能。二、试验原理DEBUG状态下,分别输入下面各程序段,每输入完一个程序段,G命令进展连续方式执行程序,在连续执行时,要记录程序的执行结果。参考程序:10000H00H~0FH~00H3100H~0FH数据渐渐增大,0FH~00HCS:0100HA100命令进入输入汇编语句状态。13A2:0100MOVAX,100013A2:0103MOVDS,AX13A2:0105MOVSI,013A2:0108MOVCL,0F13A2:010AXORAX,AX13A2:010CMOV[SI],AL13A2:010EINCSI13A2:010FINCAL13A2:0111DECCL13A2:0113JNZ010C13A2:0115MOVCX,1013A2:0118MOV[SI],AL13A2:011AINCSI13A2:011BDECAL13A2:011DLOOP011813A2:011FINT20注:转段指令的符号地址直接用确定偏移地址,该地址在用A命令汇编输入时,可以看到程序全部运行完之后,可用DEBUG的Dump命令查看建立的数据块内容。例如:-D1000:00 1E把上一个程序的执行结果(31个字节数据块,10000H),分几种方式传送到以下指定的区域。该程序从内存CS:0150H5050H开头的存贮区域中。首先运行A150DEBUG下不支持符号地址,如PPE:标号等,在命令A下输入程序时,不能输入标号〔如PPE〔如LOOJNZ等,在其后直接输入要跳转的目的地址MOV AX,1000MOV DS,AXMOV SI,0MOV DI,5050MOV CX,1F ;数据块长度是31PPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20检查内存数据块的传送状况,可用“D”命令。用串传送指令MOVSB5150HCS:0200H开头输入。MOV AX,1000MOV DS,5150MOV CX,1FCLDPPEB:MOVSBDECCXJNZPPEBINT20检查程序最终的执行结果,可用“D”命令,例如:-D1000:5150↙用重复串操作指令“REP MOVSB”把数据块传送到5250H开头的区域。该程序从CS:250H地址开头输入。MOV AX,1000MOV DS,5250MOV CX,1FCLDREP MOVSBINT 20检查程序的最终执行结果时,可用:-D1000:5250H用串操作的减量工作方式,把数据块传送到501FH开头的区域。该程序从CS:0300H开头输入。MOV AX,101FMOV DS,501FMOV CX,1FSTDREP MOVSBINT 20检查程序的最终执行结果,用D命令:-D1000:5000↙三、试验仪器IBM-PC微机或兼容机一套。预备一U盘,用于存放你的程序。四、试验步骤参照试验一的步骤,依据本试验程序的内容,分别输入各段程序,并单步和连续执行程序,记录每条指令的执行结果和每个程序段的最终结果。在作单步操作或用G命令设段点操作时,在暂停处,可以检查全部存放器和有关内存单元的内容,这不会影响程序的连续执行。假设想把源数据块重换一批数据,可以用DEBUG的Fill命令填充的数据。例如:-F1000:00 L1F 33↙1000:0000H3133H。五、试验预习要求连续阅读PC微机DOS操作手册有关命令说明。认真阅读DEBUG调试程序的命令说明。认真阅读本试验给出的各程序段。写出每个程序段的结果数据(分析结果),并说明结果所在的位置(存放器或存贮器)。六、试验报告要求整理每个程序段在试验时的记录内容。比较每个程序段的特点。分析本次试验消灭的问题,找出问题所在。试验三 汇编编译器的使用及程序调试一、试验目的1.、把握Masm的使用;把握Link的使用;把握DebugDeb2023的使用;生疏一种界面操作下的集成汇编语言编译器。二、试验要求:依据试验目的,认真完成试验中给出的任务;依据试验过程和结果,完成试验报告;在试验报告中应认真写出自己的试验心得和体会;鼓舞同学进展沟通,但是制止抄袭!每人一组,独立完成。三、试验原理及内容:1、试验内容:本试验是汇编语言学习的第一个试验,要求利用汇编语言实现一个Dos界面下“HelloWord序,只要可以实现在屏幕上输出一行字符即可;2、试验原理:一般的汇编程序包括两个局部:数据段和代码段〔有的程序还会有堆栈段〕,每个局部都有比较固定的格式;汇编程序的输入和输出实现相比照较麻烦,需要调用Dos中断来实现,期望学习输入和输出中断是如何实现的;asmexe文件中间有多个步骤,需masm、link,需要娴熟把握;汇编语言的调试相对也比较麻烦,需要用到Debug或Deb2023命令,期望把握常用的DebugDeb2023选项,能够看懂反汇编的结果。四、试验软硬件环境:奔腾系列机器,操作系统为Dos或者Windows系列,相关的汇编语言编译工具〔MASM、LINKDEBUG〕以及集成编译器。五、试验步骤和方法:本试验重点在于生疏汇编语言编译器的使用及程序的调试,试验内容相比照较简洁,但是中间需要大家娴熟把握其中涉及到的每一个步骤,为后续试验打下良好的根底。MASM5.0winxp环境下,依据给定的任务为例进展的步骤说明〔由于这是第一个汇编程序,我们供给一个最根本的源程序供大家参考:1、将包括MASM、LINKDEBUGDeb2023MASM拷贝到计算机C盘的根名目下;2、翻开记事本,输入如下代码:DATASSEGMENT ;数据段msg db “HelloWorld!“,13,10,“$“;此处输入数据段代码DATASENDSSTACKSSEGMENT;堆栈段;此处输入堆栈段代码STACKSENDSCODESSEGMENT ;代码段ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVDS,AXLEADX,msg;此处输入代码据段代码movah,9INT21hMOVAH,4CHINT21HCODESENDSENDSTART保存为firPro.asm,保存位置为“C:\masm\”。留意:后缀名确定要为“.asm”,否则,可能消灭错误!使文件显示后缀名以便修改的方法如以以下图示:翻开资源治理器,选择文件夹选项,如图1-1所示;将“隐蔽文件类型的扩展名”选项前的去掉,如图1-2所示;将文件名“firPro.txt”重命名为“firPro.asm”即可。1-1翻开文件夹选项1-2去掉文件扩展名在“运行”窗口键入“cmd”masm1-3所示;图1-3图1-3进入masm文件夹masmfirPro.asm1-4所示。其中:Objectfilename是编译为目标文件的名称,直接回车,表示默认和源文件同名,只是后缀名不同,本试验中均为默认;编译之后文件夹中消灭一个文件:firPro.obj1-5所示:1-4masm后的结果1-5masm命令的执行linkfirPro.obj1-6所示:其中:RunFile编译之后文件夹中消灭一个文件:FIRPRO.exe1-7所示:FIRPRO1-8所示:Debug,进展反汇编,键入:Debugfirpro.exe1-9所示:在消灭的光标后,键入U1-10所示:q1-11所示:MASM、LINKDEBUG的使用方法已经有了比较清楚的了解。另外,我们还供给了另外一个集成的编译环境,“MasmforWindows集成试验环境”,大家可以仿照上述步骤,生疏一下所供给的集成试验环境。masm、linkDebug的根底之上再去使用所供给的集成试验环境!1-6link命令的执行1-7编译之后消灭的可执行文件1-81-8可执行文件的执行结果1-9反汇编之后的结果1-10U的结果1-111-11推出反汇编的命令四、试验预习要求:认真阅读试验指导书附录局部的内容,了解最根本的汇编语言的学问,包括8088/8086的体系构造和指令系统,在以后的试验中将会不断的用到相关的指令,在试验课中给出的课件中的相关内容也请大家认真研读。依据试验过程和试验结果完成试验报告,并按时上交五、思考题:1、在图1-4中,masmfilename.asm后,假设不是连续回车,而是输入字符串结果会有什么不同;21-11中,每行的类似于“0B4F:xxxx”示什么意思?31-11留意:思考题不做硬性要求。试验四分支程序设计一、试验目的:通过上机编程,生疏利用汇编语言设计不同种类分支程序的方法,把握汇编语言中实现分支程序的相关汇编指令。二、试验要求:设计并实现一个求解一组无符号字节序列中的最大值和最小值的汇编程序;每人一组,独立完成;依据试验目的,认真完成试验中给出的任务;依据试验过程和结果,完成试验报告并准时上交相关文档;在试验报告中应认真写出自己的试验心得和体会;鼓舞同学进展沟通,但是制止抄袭!三、试验原理及内容:在实际问题中,需要对不同状况做不同的处理,这就需要使用到分支构造。汇编语言中的分支程序是利用条件转移指令或者跳转表,使程序在执行到某条指令后,依据运行结果是否满足确定条件来转变程序执行的挨次,然后执行不同的条件下对应的指令。假设进展的是规律分支,可以用每次分两支的方法来到达程序多分支的目的。一般而言,分支程序的构造通常有三种形式:不完全分支、完全分支和多分支,如以下图:在本试验中,我们以求解一组无符号字节序列中的最大值和最小值的问题进展讲解分支BX的高位和低位分别用于存放最大数和最小数,然后,将序列中的两个数存入其中,再将序列中的其他BHBLBHBL,则将存放器中的数用当前取出的数进展替换,完全比较之后,BHBL中数即为整个序列中的最大数和最小数。四、试验软硬件环境:奔腾系列机器,操作系统为Dos或者Windows系列,相关的汇编语言编译工具〔MASM、LINKDEBUG〕以及集成编译器。五、试验步骤和方法:本试验重点算法的理解以及相关指令的灵敏应用。依据上述算法,编制程序流程图,如图4-1所示;4-1程序流程图依据流程图,编写实现代码;程序汇编为目标文件.obj。目标文件.obj链接为可执行文件.exe使用Debug依据试验过程和试验结果完成试验报告,并按时上交。留意:在程序设计中,留意相关的存放器的用途,如CX的作用,SI的作用,以及汇编语言中,一个存放器的凹凸位可以分开使用的特点。六、、CX等,以及存放器的凹凸位可以分开使用的特点。学校印刷的标准报告纸写试验报告。总结汇编语言中的存放器分为那几类,每类各有什么特点?总结汇编语言中如何利用相关指令实现分支程序设计?试验五循环程序设计一、试验目的进一步把握分支程序和循环程序的编写方法。二、试验原理1056、69、84、82、73、88、99、63、10080分。试编制程序6060~6970~7980~8990~99100分的人数存放到s5s6、s7、s8、s9s10单元中。这一题目的算法很简洁,成绩分等局部承受分支构造,统计全部成绩则用循环构造完成。程序框图如以以下图所示。三、试验仪器IBM-PC微机或兼容机一套。预备一张已格式化过的用户软盘(空盘),用于存放你的程序。开始初始化计数单元开始初始化计数单元初始化循环计数值初始化首地址取一个成绩YS5+1YS6+1YS7+1YS8+1N<60?N<70?N<80?N<90?N=100?YS9+1S10+1修改地址N循环完毕?Y结束四、试验步骤输入编写的源程序,进展调试。参考程序如下:;PROGRAMTITLEGOESHERE――result;************************************datareasegment;definedatasegmentgradedw56,69,84,82,73,88,99,63,100,80s5dw0s6dw0s7dw0s8dw0s9dw0s10dw0datareaends;************************************prognamsegment ;definecodesegment; main proc far ;mainpartofprogramassume cs:prognam,ds:datareastart: ;startingexecutionaddress;setupstackforreturnpushds;saveolddatasegmentsubax,ax;putzeroinAXpushax;saveitonstack;setDSregistertocurrentdatasegmentmov ax,datarea ;datareasegmentaddrmov ds,ax ;intoDSregister;MAINPARTOFPROGRAMGOESHEREmovs5,0;initializecountermovs6,0movs7,0movs8,0movs9,0movs10,0movcx,10;initializeloopcountvaluemovbx,offsetgrade;initializefirstaddrcompare:movax,[bx];getaresultcmpax,60;<60?jlfivecmpax,70;<70?jlsixcmpax,80;<80?jlsevencmpax,90;<90?jleightcmpax,100;=100?jnenineincs10jmpshortchange-addrnine:incs9jmpshortchange-addreight:incs8jmpshortchange-addrseven:incs7jmpshortchange-addrsix:incs6jmpshortchange-addrfive:incs5change-addr:add bx,2loop compareret ;returntoDOSmain endp ;endofmainpartofprogram; prognam ends;***************************end start ;endassembly五、试验要求读懂所给的程序。编写程序将存放于S5、S6、S7、S8、S9及S10单元中的数据在屏幕上显示出来。试验六子程序设计一、试验目的进一步生疏排序方法。二、试验原理学生成绩名次表试验:0~100101000H的单元中。1000H+i表示学号为i的学生成绩,编写程序能在2023H开头的区域排知名次表。2023H+i为学号i的学生的名次。参考主程序:入口入口段存放器和堆栈初始化10个学生的成绩”SI指向成绩表首址学生数送CX调GETNUM,读学生成绩送[SI]中SI加1指向下一单元CX10?NY学生数送CXDI指向名次表首址调SCAN子程序,扫描成绩表计算名次填入DX学号对应的名次表单元YN排定的学生名次返回DOSSCAN返回DOS入口入口CX入栈保存学生数送CXAL00HBX和SI均指向成绩表首址AL≥[SI]?NY[SI]送AL中,DX记录对应学号SI1指向下一单元N CX10?Y0CX出栈返回三、试验仪器IBM-PC微机或兼容机一套。预备一张已格式化过的用户软盘(空盘),用于存放你的程序。四、试验步骤输入编写的试验程序,进展调试。参考程序:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTSTUNUMEQU10MESSDB‘INPUT30STUDENTSSCORE:’,0DH,0AH,’$’ERRORDB‘INPUTERROR!’,0DH,0AH,’$’ORG1000HSCOREDB30DUP(?)ORG2023HSEQUDB30DUP(?)DATAENDSSTACKSEGMENTSTADW32DUP(?)TOPDW?STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOP ;初始化MOV AH,09HMOV DX,OFFSETMESSINT 21H ;显示提示信息MOV SI,OFFSETSCORE ;成绩表首址MOV CX,STUNUM ;学生数送CXUUU: CALL GETNUM ;读取键入数值送DXMOV [SI],DL ;存入成绩表缓冲区INC SI ;指向下一单元LOOP UUUMOV CX,STUNUM ;学生数MOV DI,OFFSETSEQU ;名次表首址VVV: CALL SCAN ;扫描子程序MOV AL,STUNUM ;学生数SUB AL,CLINC AL ;计算名次MOV BX,DXMOV [DI+BX],AL ;记DX学号对应名次LOOP VVVMOVCX,MOVCX,STUNUM;学生数MOVSI,OFFSETSEQU;名次表首址WWW:MOVAL,[SI]CALLDISP1CRLFINCSILOOPWWW;显示排定的学生名次MOVAX,4C00HINT21HSCANPROCNEAR;子程序,每扫描一遍成绩表缓冲区,找出其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年品牌推广合作协议合同三篇
- 软件许可使用合同协议范本
- 化工企业采购管理制度
- 单位采购业务控制制度
- 医疗器械采购评审制度
- 橡胶采购管理制度及流程
- 工地日常采购管理制度
- 工厂车间采购制度
- 学校采购需求制度
- 工程采购物资管理制度范本
- 广东省化工(危险化学品)企业安全隐患排查指导手册(危险化学品仓库企业专篇)
- 卫生院防雷安全生产制度
- 大型超市卫生组织制度
- 齐成控股集团招聘笔试题库2026
- 卫生部病历书写基本规范2025年版
- QGDW11337-2023输变电工程工程量清单计价规范
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 小儿喂养与膳食安排
- 组合分析样送样单
- 遥感原理与应用-第2章
- 黎族文化简介课件
评论
0/150
提交评论