




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东北大学计算机硬件技术基础实验报告班级:机械0908姓名:学号:20232063实验题目:分支程序设计日期:2023年11月28日实验一一、实验目的1)掌握分支程序的结构;2)掌握分支程序的设计,调试方法;二、实验内容设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们从大到小重新排序的程序。三、算法描述流程图四、实验环节1.输入源程序:DATAﻩﻩSEGMENTBUFﻩ DB 13,52,14DATAﻩﻩENDSCODEﻩ SEGMENTﻩ ASSUMEﻩﻩCS:CODE,DS:DATASTART:MOVﻩ AX,DATAMOV DS,AXMOVﻩﻩSI,OFFSETBUFMOV AL,[SI];把3个数取到寄存器中MOVﻩ BL,[SI+1]MOV ﻩCL,[SI+2]CMPﻩ AL,BLJAE ﻩNEXT1XCHG ﻩAL,BLﻩﻩ ;排序,将最大数送AL寄存器NEXT1:CMP ﻩAL,CLJAEﻩ NEXT2XCHGﻩ AL,CLNEXT2:CMPﻩ BL,CL;将最小数送CL寄存器JAEﻩ NEXT3XCHGﻩﻩBL,CLNEXT3:MOV ﻩ[SI],AL;从大到小依次存回缓冲区MOVﻩ [SI+1],BLMOV [SI+2],CLMOVﻩ AH,4CHINT ﻩ21HCODE ENDSﻩENDﻩﻩSTART2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证运营结果为340E0D,即521413,由大到小排列,满足题目规定且无错误。五、实验结果1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,得到如下界面:2.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下界面:运营结果为340E0D,即521413,由大到小排列,满足题目规定且无错误。六、思考题分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和对的的地使用条件转移指令。本程序中,由于是无符号数的比较,所以也可以根据一个标志位来鉴定数的大小,你能说出那个是标志位吗,且程序中的JEA指令改用什么指令替换呢?答:可以根据CF标志位来鉴定数的大小。CF=0时,DST>SRC;当CF=1时,DST<RSC。当CF=1时,用JC指令可以实现转移;当CF=0时,用JNC指令可以实现转移。七、扩展题在BUF开始的单元里有3个单字节无符号数,编写程序找出它们中的最小值并存入MIN单元。1.输入源程序如下:DSEGﻩﻩSEGMENTBUFﻩﻩDB99,72,88MINﻩ DB0DSEGﻩ ENDSCODEﻩSEGMENTﻩASSUMEﻩﻩCS:CSEG,DS,DSEGSTART: MOV AX,DSEGﻩMOVﻩDS,AXﻩﻩMOVﻩSI,OFFSETBUF ﻩ MOV AL,[SI];把3个数取到寄存器中ﻩﻩ MOVﻩBL,[SI+1] ﻩMOVﻩCL,[SI+2] CMPﻩAL,BL;排序,将最大数送AL寄存器ﻩ JAE NEXT1ﻩ XCHG AL,BLNEXT1: MOV MIN,BL;排序,将最小数送MIN区ﻩﻩCMPﻩBL,CL ﻩJAEﻩNEXT2 XCHGﻩBL,CLNEXT2: MOVﻩMIN,CLﻩ MOV AH,4CHﻩ INT 21HCODEﻩENDSﻩ ﻩEND START2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下图。经验证运营结果为63485848,即997288,MIN区值为48,即最小值72,无错误。八、实验心得通过本次实验我理解了汇编语言中编程的基本环节,掌握了分支结构程序设计中准确知道操作结果影响的标志位状态和对的的使用无条件转移指令以及无符号数的比较方法。这个实验,使我结识到直接通过CPU寄存器地址赋值可以大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。实验二一、实验目的1)掌握分支程序的结构;2)掌握分支程序的设计,调试方法;二、实验内容设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们从大到小重新排序的程序。三、算法描述流程图四、实验环节(1)x、y异号1.输入源程序:DATAﻩ SEGMENTXﻩﻩﻩDB ﻩ ﻩ99Y ﻩﻩDB ﻩﻩﻩ-33Zﻩ DBﻩﻩ ﻩ0DATAﻩﻩENDSCODEﻩ SEGMENTﻩﻩASSUMEﻩﻩCS:CODE,DS:DATASTART:MOVﻩﻩﻩAX,DATAﻩﻩMOVﻩﻩ ﻩDS,AXﻩCMP ﻩ ﻩX,0;x与0进行比较 ﻩJLﻩﻩ ﻩ L1;x<0转L1CMP ﻩﻩﻩY,0JL ﻩ L2;y<0转L2ﻩ MOVﻩﻩﻩﻩZ,1;x>=0,y>=0则1→Z,无条件转EXITﻩ JMP ﻩ EXITL1:ﻩﻩCMPﻩﻩ Y,0;y>=0转L2 JGEﻩﻩ L2MOV ﻩ Z,-1;x<0,y<0则-1→Z,无条件EXITJMPﻩ ﻩEXITL2:ﻩﻩMOVﻩﻩﻩﻩZ,0;x,y异号则0→ZEXIT:ﻩMOVﻩﻩﻩ AH,4CHﻩ INT ﻩ ﻩ21HCODEﻩ ENDSﻩ ﻩEND ﻩSTARTﻩ2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当x、y异号时,Z值为0,结果满足题目规定且无错误。(2)x、y同为正1.输入源程序:DATAﻩﻩSEGMENTXﻩ ﻩDBﻩﻩ ﻩ13Yﻩﻩ DB ﻩﻩ 14Z DBﻩ ﻩ0DATA ENDSCODE ﻩSEGMENT ﻩASSUME ﻩCS:CODE,DS:DATASTART:MOVﻩﻩﻩAX,DATA MOVﻩﻩﻩﻩDS,AX CMP ﻩﻩ X,0;x与0进行比较 ﻩJLﻩ ﻩ L1;x<0转L1CMP ﻩ Y,0JLﻩ ﻩﻩ L2;y<0转L2ﻩﻩMOV ﻩﻩZ,1;x>=0,y>=0则1→Z,无条件转EXITﻩ JMP ﻩEXITL1: ﻩCMP ﻩﻩﻩY,0;y>=0转L2ﻩﻩJGE ﻩ L2MOVﻩﻩﻩﻩZ,-1;x<0,y<0则-1→Z,无条件EXITJMPﻩ EXITL2: ﻩMOV ﻩ Z,0;x,y异号则0→ZEXIT: MOV ﻩAH,4CH INT ﻩﻩﻩ21HCODE ENDS ﻩEND ﻩﻩSTART2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当x、y都大于0时,Z值为1,结果满足题目规定且无错误。(3)x、y同为负1.输入源程序:DATAﻩﻩSEGMENTXﻩ DBﻩﻩ -36Y ﻩ DB ﻩ -12Zﻩﻩ DB ﻩﻩ 0DATA ENDSCODE SEGMENT ASSUMEﻩﻩCS:CODE,DS:DATASTART:MOV ﻩAX,DATAﻩ MOVﻩﻩﻩ DS,AX CMPﻩ ﻩ X,0;x与0进行比较 JL ﻩ L1;x<0转L1CMP ﻩ Y,0JL ﻩL2;y<0转L2 MOV ﻩﻩ Z,1;x>=0,y>=0则1→Z,无条件转EXIT ﻩJMP ﻩﻩﻩEXITL1:ﻩﻩCMPﻩ ﻩﻩY,0;y>=0转L2 JGEﻩ ﻩL2MOVﻩ Z,-1;x<0,y<0则-1→Z,无条件EXITJMPﻩﻩ ﻩEXITL2:ﻩ MOVﻩ Z,0;x,y异号则0→ZEXIT:ﻩMOVﻩ ﻩ AH,4CHﻩ INT ﻩﻩ21HCODEﻩ ENDSﻩﻩﻩENDﻩﻩ START 2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当x、y都小于0时,Z值为-1,结果符合题目规定且无错误。五、实验结果(1)x、y异号1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,得到如下界面:2.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下界面:经验证当x、y异号时,Z值为0,结果满足题目规定且无错误。(2)x、y同为正1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,得到如下界面:2.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下界面:经验证当x、y都大于0时,Z值为1,结果满足题目规定且无错误。(3)x、y同为负1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,得到如下界面:2.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下界面:x、y都小于0时,Z值为-1,结果符合题目规定且无错误。六、思考题本程序中鉴定符号用的是CMP指令,而用逻辑操作指令也可以。比如,可以用AND指令,使其进行自身与操作,反映到SF标志位,还可以用TEST指令直接测试最高位,并将结果反映到ZF标志位,然后根据ZF标志位判断。试用TEST指令编之。答:1.输入源程序如下:DATA ﻩSEGMENTXﻩﻩ DBﻩﻩ66Y ﻩ DBﻩﻩ-100Zﻩ ﻩDBﻩﻩ0DATAﻩﻩENDSCODEﻩSEGMENT ﻩ ASSUME CS:CODE,DS:DATASTART:ﻩ MOVﻩ AX,DATAﻩﻩ MOV ﻩDS,AX ﻩTESTﻩﻩX,80H JNE ﻩL1 ﻩﻩTESTﻩ Y,80HﻩﻩﻩJNEﻩﻩL2ﻩ ﻩMOV ﻩZ,1ﻩﻩﻩJMP ﻩEXIT ﻩ L1:ﻩ TESTY,80H ﻩ JE L2 ﻩ MOV Z,-1ﻩﻩﻩJMP ﻩEXITL2:ﻩﻩMOVﻩ Z,0EXIT:ﻩ MOVﻩﻩAH,4CHﻩ ﻩINTﻩ 21HCODEﻩENDS ENDﻩﻩSTART2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下图经验证运营结果为429C00,即66-1000,x、y异号,Z值为0,无错误。七、扩展题假如不采用上述方法判断两数的符号,而采用两数异或的方法判断两数的符号,当两数的符号不相同时,其结果的最高位必然为1;当两数的符号相同时,其结果的最高位必然为0;在根据其中一数的符号是正还是负决定两数是正数还是负数。请做程序完毕。(1)x、y同号1.输入源程序:DSEG SEGMENTXﻩﻩDB -3Yﻩ DBﻩ-4Zﻩ DBﻩ0DSEG ENDSCSEGﻩ SEGMENTﻩASSUMECS:CSEG,DS:DSEGSTART:MOVﻩﻩAX,DSEGﻩ MOV DS,AXﻩ MOVﻩAL,XﻩﻩMOV BL,Y XOR AL,BLﻩﻩJSL1 JGEL2ﻩﻩMOV Z,1 ﻩJMPﻩEXITL1:ﻩ ﻩMOVZ,1 ﻩJMPEXITL2:ﻩMOVZ,0EXIT: MOVAH,4CHﻩﻩINT21HCSEG ﻩENDSﻩ ENDﻩSTART2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下图。(2)x、y异号1.输入源程序:DSEGﻩﻩSEGMENTX DBﻩ5YﻩﻩDB -6ZﻩﻩDBﻩ0DSEGﻩENDSCSEG ﻩSEGMENT ASSUMECS:CSEG,DS:DSEGSTART:MOVﻩ AX,DSEGﻩﻩMOV DS,AXﻩ MOVﻩAL,X ﻩMOVﻩBL,Y XORﻩAL,BLﻩﻩJSL1 ﻩJEL2ﻩ MOV Z,1 JMPﻩEXITL1: ﻩﻩMOVZ,1 ﻩJMPEXITL2:ﻩMOVZ,0EXIT:ﻩMOVAH,4CHﻩ INT21HCSEGﻩﻩENDS ENDﻩSTART2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下图。八、实验心得通过本次实验我理解了汇编语言中编程的基本环节,掌握了emu8086软件的基本运用,调试,对运营结果的简朴分析。能运用基本的汇编语言做一些简朴的程序,特别是对CMP指令,逻辑指令TEST和他相应的ZF指令的熟悉与运用。实验三一、实验目的1)掌握分支程序的结构;2)掌握分支程序的设计,调试方法;二、实验内容设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们从大到小重新排序的程序。三、算法描述流程图四、实验环节1.输入源程序DATA ﻩSEGMENTDIS0 DBﻩ'INPUTDIGIT0!$'DIS1 DB 'INPUTDIGIT1!$'DIS2 DBﻩ'INPUTDIGIT2!$'DIS3ﻩDB 'INPUTDIGIT3!$'DIS4 DB 'INPUTDIGIT4!$'DIS5 DB 'INPUTDIGIT5!$'DIS6 DBﻩ'INPUTDIGIT6!$'DIS7 DBﻩ'INPUTDIGIT7!$'DIS8ﻩDB 'INPUTDIGIT8!$'DIS9 DB 'INPUTDIGIT9!$'DIS10 DB 'INPUTCHARACTER!$'DATAﻩ ENDSCODEﻩ SEGMENTﻩ ASSUME ﻩCS:CODE,DS:DATASTART:MOV ﻩAX,DATAﻩ MOVﻩﻩDS,AXﻩMOV AH,1;调用键盘输入DOS中断ﻩINTﻩﻩ21Hﻩ CMP ﻩAL,30H;假如输入的是非数字则转MﻩﻩJBﻩ ﻩM CMPﻩ AL,39H ﻩJA ﻩMﻩ AND ﻩAL,0FHﻩﻩJMP ﻩN:假如输入的是数字则转N,AL寄存器保存输入的数M:ﻩ MOVﻩ AL,10;假如输入的是非数字则将AL寄存器送10N:ﻩ LEA ﻩBX,TAB;根据AL寄存器的值求转移地址表的地址 MOVﻩﻩAH,0ﻩ SHLﻩﻩAL,1ﻩ ADD ﻩBX,AX ﻩJMP BX;转到地址表中相应的指令去执行EXIT:ﻩMOV ﻩAH,4CH ﻩINTﻩ 21HTAB: JMP ﻩSHORTP0;地址表 JMPﻩﻩSHORTP1 JMP ﻩSHORTP2 ﻩJMP SHORTP3ﻩ JMP ﻩSHORTP4 JMPﻩﻩSHORTP5ﻩﻩJMPﻩ SHORTP6ﻩﻩJMP SHORTP7ﻩﻩJMP ﻩSHORTP8ﻩ JMP SHORTP9 JMP ﻩSHORTP10P0: ﻩLEA DX,DIS0;显示输入字符INPUTDIGIT0! ﻩMOV ﻩAH,9 ﻩINT 21H JMPﻩEXITP1: LEA DX,DIS1ﻩﻩ ;显示输入字符INPUTDIGIT1!ﻩﻩMOV AH,9 ﻩINT 21Hﻩ JMPﻩ EXITP2: LEA DX,DIS2ﻩ ;显示输入字符INPUTDIGIT2! ﻩMOV ﻩAH,9 INT ﻩﻩ21H ﻩJMPﻩﻩEXITP3:ﻩ LEA ﻩDX,DIS3ﻩ ;显示输入字符INPUTDIGIT3! ﻩMOV ﻩAH,9ﻩ INT ﻩ 21H ﻩJMPﻩﻩEXITP4: LEA DX,DIS4ﻩﻩﻩ ;显示输入字符INPUTDIGIT4! ﻩMOV ﻩAH,9ﻩﻩINT ﻩﻩ21HﻩﻩJMPﻩﻩEXITP5: LEA ﻩDX,DIS5ﻩﻩﻩ ;显示输入字符INPUTDIGIT5! ﻩMOV ﻩAH,9 INT ﻩ21H ﻩJMPﻩﻩEXITP6:ﻩ LEAﻩﻩDX,DIS6ﻩ ﻩ ;显示输入字符INPUTDIGIT6!ﻩ MOV AH,9ﻩ INT 21H JMP EXITP7:ﻩﻩLEAﻩﻩDX,DIS7 ;显示输入字符INPUTDIGIT7! MOV ﻩAH,9ﻩ INTﻩﻩ 21HﻩﻩJMP ﻩEXITP8: ﻩLEA ﻩDX,DIS8 ﻩ;显示输入字符INPUTDIGIT8!ﻩ MOVﻩﻩAH,9ﻩﻩINTﻩ 21H JMPﻩﻩEXITP9: ﻩLEAﻩﻩDX,DIS9 ﻩ;显示输入字符INPUTDIGIT9! ﻩMOV ﻩAH,9ﻩﻩINT ﻩ21H JMP ﻩEXITP10:ﻩLEA DX,DIS10ﻩ ﻩ;显示输入字符INPUTCHARACTER!ﻩ MOVﻩﻩAH,9 ﻩINT 21HﻩﻩJMPﻩﻩEXITCODEﻩ ENDSﻩ ﻩENDﻩ START2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果无错误。经验证,输入数字0~9时,显示INPUTDIGIT0!~INPUTDIGIT9!;输入其他键时,显示INPUTCHARACTER!,结果符合题意且对的。五、实验结果1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:noname.exe_文献,得到如下界面:2.执行run程序,分别输入数字:“5”和字母“T”,得到如下界面:经验证,运营结果无错误且符合题意。六、思考题再求相应地址是,程序中使用了SHLAL,1语句,请问这说明了什么?答:“SHLAL,1"的命令是指将操作数乘以2,在该程序中,转移指令表中的每条转移指令代码是由两个字节组成的,将AL寄存器中的数乘以2后再与BX相加,就是相应输入数字的转移指令代码的有效地址。七、扩展题编制程序,判断键盘输入的一个数,若输入1—5,则将该数转换为二进制数存放至RLT单元,若输入其他数则显示输出“ERROR”。1.输入源程序DATAﻩﻩSEGMENTDISﻩﻩ DB ﻩ 'ERROR!$'RLT DWﻩ ﻩ0DATA ENDSCODE SEGMENTﻩ ASSUME ﻩCS:CODE,DS:DA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南平2025年福建南平政和县中小学新任教师招聘17人笔试历年参考题库附带答案详解
- 融资顾问服务协议二零二五年
- 食堂档口租赁合同范例二零二五年
- 自然人股权转让标准协议范例二零二五年
- 二零二五股东股权代持协议
- 控制权转让协议二零二五年
- 组件采购合同范例
- 二零二五版员工分红合同
- 二零二五医院医师聘任合同
- 2025年上海市租赁合同范本(标准版)
- 红色中国风黎族三月三
- 2024-2030年中国实体书店行业前景展望与趋势预测分析研究报告
- 患者发生烫伤的应急预案
- 经皮肺动脉去神经术治疗肺动脉高压的中国专家建议
- JGJ/T235-2011建筑外墙防水工程技术规程
- 传染病防治知识培训试题及答案(7套)
- 期末培优拔高卷(试题)-2023-2024学年五年级下册数学北师大版
- 那个星期天教学课件省公开课一等奖新名师比赛一等奖课件
- 2024年辽宁省抚顺市顺城区中考数学三模试卷
- 微塑料污染完整版本
- 四年级劳动练习试题及答案
评论
0/150
提交评论