实验2 顺序与分支汇编语言程序设计实验

合集下载

汇编实验二--顺序程序设计

汇编实验二--顺序程序设计

福建农林大学金山学院实验报告系:信息与机电工程专业:电子信息技术年级: 10姓名:学号: 1002010 实验课程:汇编语言实验室号:____67___ 实验设备号: E 实验时间:指导教师签字:成绩:实验二顺序程序设计1.实验目的和要求1.学习使用DEBUG的命令;2.使用DEBUG命令在数据段中查看程序运行的结果;3.利用DEBUG运行简单的程序段。

2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1)输入程序观察寄存器变化使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。

注意用T命令执行时,CS: IP寄存器的内容MOV AX, 4E20ADD AX, 1416MOV BX, 2000ADD AX, BXMOV BX, AXADD AX, BXMOV AX, 001AMOV BX, 0026ADD AL, BLADD AH, BLADD BH, ALMOV AH, 0ADD AL, BLADD AL, 9C2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。

DSEG SEGMENTMSG1 DB ‘abc’DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXLEA BX, MSG1MOV CX, 3S: MOV AL, [BX]AND AL, 11011111B ;将AL中的ASCII码的第5位置0,;变成大写字母。

MOV [BX], ALINC BXLOOP SMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START3)程序的跟踪执行操作在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。

汇编语言实验报告

汇编语言实验报告

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。

3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。

并将这20个字节的内容复制到其后的20个字节里。

四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。

2. 在Debug中,数值都是16进制的。

3. 在读写内存中的数据时,必须指出数据类型是byte还是word。

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。

2、熟悉DEBUG程序的使用方法。

3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。

二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。

2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。

三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。

2、预习DEBUG调试程序的使用方法。

3、根据实验内容要求,编写好实验源程序。

四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。

2、汇编、连接源程序,产生.EXE可执行文件。

3、运行程序。

(1) 进入DEBUG。

打入DEBUGT MYPROG.EXE。

MYPROG为所编程序的文件名。

(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。

如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。

(3) 检查程序。

在程序中设置若干断点,以便杳出错误所在。

(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。

五、实验报告要求1、列出程序清单,并给出程序流程图。

2、总结实现数据传送的几种方法,指出它们的区别。

开始3、分析实验中所遇到的一些问题,分析错误原因。

4、说明本实验中是如何使用DEBUG进行调试的。

CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。

实验二分支程序实验

实验二分支程序实验

实验二分支程序实验实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。

2)掌握利用DEBUG修改参数、检查结果的方法。

3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3、实验准备1)编写实验内容要求的两个程序。

2)写出调试以上程序,即修改程序参数,检查结果的操作方法。

3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4、实验步骤1)用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

2)对其进行汇编及连接,产生.EXE文件。

3)对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法。

(2)对DSPKEY.EXE键入不同的字符,分别进行调试。

(3)在MS-DOS下运行这两个.EXE文件。

5、实验报告要求1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

2)说明本实验是如何利用DEBUG进行调试的。

6、参考程序清单1)显示AL中两位十六进制数程序:;DISPHEX.ASMCODE SEGMENTASSUME CS:CODESTART: MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE NEXT1ADD DL,7NEXT1: ADD DL,30HMOV AH,2INT 21H ;显示高位ASCII码MOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7NEXT2: ADD DL,30HMOV AH,2INT 21H ;显示低位ASCII码MOV AH,4CHINT 21HCODE ENDS ;返回DOSEND START2)显示键入字符程序;DISPKEY.ASMCODE SEGEMENTASSUME CS:CODESTART: MOV AH,1INT 21H ;等待键入字符,送AL CMP AL,0DH ;是否是回车符?JZ DONE ;是则转DONE退出程序CMP AL,’0’JB NEXTCMP AL,’9’JA CHARUPMOV DL,ALMOV AH,2INT 21HJMP STARTCHARUP: CMP AL,41HJB NEXTCMP AL,5AHJA CHRDNDISPC: MOV DL,’C’MOV AH,2INT 21HNEXT: JMP START CHRDN: CMP AL,61HJB NEXTCMP AL,7AHJA NEXTJMP DISPCDONE: MOV AH,4CHINT 21HCODE: ENDSEND START。

汇编语言 顺序程序设计

汇编语言 顺序程序设计

实验二程序格式和上机过程实验类型:验证性实验目的:1、掌握汇编语言程序格式2、掌握汇编语言程序编写和调试方法3、掌握数据段、附加数据段的初始化方法和返回DOS的方法4、掌握基本四则运算和双精度数运算的方法。

实验步骤:1、进入DOS环境2、输入命令:path c:\windows\command;c:\turbo\masm保证实验过程中使用的所有命令都在当前路径直接调用3、启动EDIT编辑器输入程序代码4、检查语法错误,如无错误以ASM为后缀名保存文件(如文件名chen.asm)5、运行命令MASM CHEN.ASM生成OBJ文件6、如果出错请回到第3步再纠正错误7、运行命令LINK CHEN.OBJ(此时提示没有堆栈错误请忽略)生成EXE文件8、运行DEBUG调入可执行程序DEBUG CHEN.EXE(以下DEBUG 命令请参看第一次实验内容)9、执行反汇编U10、查看程序结束地址11、运行G 命令运行程序12、运行D和R命令查看相应的内存单元和寄存器的数据是否与结果一致,如果不一致回到第3步纠正错误,也可以运行T命令逐条运行程序寻找错误指令位置再做修改。

实验内容:编写一段程序代码实现X-Y2+Z→W其中X,Y,Z,W都是16位无符号数。

代码:data segmentx dw 1000hy dw 2000hw dw 3000hz dw ?r dw ?data endscode segmentmain proc farassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,ax;***************mov ax,ximul wmov bx,yadd bx,6idiv bxmov r,dxmov z,ax;****************retmain endpcode endsend start代码:。

实验二 汇编语言程序设计实验

实验二 汇编语言程序设计实验

实验二汇编语言程序设计实验一、实验目的1、掌握分支程序的设计方法、宏定义及宏调用的基本方法。

2、熟悉小写和大写字母的ASCII码的表示及其转换方法,熟悉数字及其他字符的ASCII码表法的方法。

3、进一步掌握调试工具的使用方法。

二、实验预习要求1、复习比较指令、条件转移指令的用法。

2、根据给出的流程图编写源程序,以便上机调试。

3、对程序中多次重复的指令序列用宏调用实现。

三、实验内容从键盘输入一字符,判断该字符是小写字母、大写字母、数字还是其它字符。

若输入为小写字母,则显示“You Input a Lowercase Letter!”;若输入为大写字母,则显示“You Input a Uppercase Letter!”;若输入为数字,则显示“You Input a Digit!”;若输入为其它字符,则显示“You Input Other Letter!”。

四、程序流程图如下图所示。

五、实验报告要求1、写出实验的源程序。

2、写出实验小结,内容包括实验心得(收获)、实验中遇到的问题及解决办法、不足之处和今后应注意的问题等。

DATAS SEGMENTBUFF1 DB'You Input a Lowercase Letter!$'BUFF2 DB'You Input a Uppercase Letter!$'BUFF3 DB'You Input a Digit!$'BUFF4 DB'You Input Other Letter!$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AH,1INT 21HCMP AL,'0'JB L4CMP AL,'9'JBE L3CMP AL,'A'JB L4CMP AL,'Z'JBE L1CMP AL,'a'JB L4CMP AL,'z'JBE L2L1: MOV DX,OFFSET BUFF1 JMP L5L2: MOV DX,OFFSET BUFF2 JMP L5L3: MOV DX,OFFSET BUFF3 JMP L5L4: MOV DX,OFFSET BUFF4 JMP L5L5: MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START。

《汇编语言程序设计》实验报告二n

《汇编语言程序设计》实验报告二n

实验报告课程名称汇编语言程序设计实验项目实验二、分支与循环程序结构和设计实验仪器微机系统、汇编调试环境系别专业班级/学号学生姓名实验日期成绩指导教师宋平实验二分支与循环程序结构和设计一、实验目的1.学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法;2.熟悉汇编语言源程序的编辑和汇编、目标模块的连接以及可执行程序的调试;3.熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。

二、实验要求1.Windows操作系统并具有命令提示符操作界面的计算机,且系统内安装有汇编语言编程环境;2.在开始本实验之前,复习教科书的相关内容,并预先写出相应的源程序;3.通过汇编IDE上机调试,注意观察,并记录下现象;4.学会顺序结构程序设计、分支结构程序设计、循环结构程序设计;5.通过本实验掌握汇编语言程序调试的具体步骤;6.通过查看存储单元和寄存器的内容掌握程序的运行结果。

三、实验内容1.编辑源文件【使用文本编辑器编辑具有下列功能源文件,并将该文件存入一指定的“实验文件夹”(如D:\4123\4123-2\4123-2-1.asm),分别编辑要求的源程序(共三个功能文件,涵盖顺序、分支、循环等基本程序结构)。

】2. 汇编源文件、连接目标文件,生成可执行文件操作步骤如下:(1)建立独立的实验文件夹【将源程序文件、汇编和连接工具程序(MASM.EXE、LINK.EXE)复制到同一实验文件夹】(2)TPC-USB集成开发环境【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明】(3)汇编与连接操作【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明当汇编和连接后出现错误提示时,请按提示位置和信息修改后保存,并重新执行汇编和连接,直至没有严重错误。

】3. 调试【参阅“TPC-USB学生实验指导书.pdf”文档用TPC-USB集成开发环境中的编译连接、启动调试/执行、单步执行、跳过、连续执行等命令调试程序,观察指令执行过程中各语句执行后的状况及程序运行结果。

汇编语言程序设计实验报告二

汇编语言程序设计实验报告二

汇编语言程序设计实验报告(二)一、实验目的1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1)编制在屏幕上显示九九乘法表的程序。

2)编制在屏幕上显示用*组成的三角形的程序。

三、实验结果(1)(2)四、源代码(1)DA TA SEGMENTM DB 31H,32H,33H,34H,35H,36H,37H,38H,39H DA TA ENDSSTACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DA TAMOV DS,AXMOV CX,9MOV DI,OFFSET MLOP1:PUSH CXMOV CX,[DI]AND CX,0FHMOV SI,OFFSET M LOP2:MOV AL,[SI]MOV DL,ALMOV AH,2INT 21HAND AL,0FHMOV BH,ALMOV DL,'*'MOV AH,2INT 21HMOV BL,[DI]MOV DL,BLMOV AH,2INT 21HMOV DL,'='MOV AH,2INT 21HAND BL,0FHMOV AL,BHMOV AH,0MOV DL,10DIV DLMOV BL,AHCMP AL,0JE NEXTMOV DL,ALADD DL,30HMOV AH,2INT 21H NEXT:MOV DL,BLADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HINC SILOOP LOP2MOV DL,0AHMOV AH,2MOV DL,0DHINT 21HINC DIPOP CXLOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START(2)STACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1 BEGIN:MOV AH,1INT 21HMOV BL,ALSUB BL,30HMOV DL,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV BH,0MOV CX,BXMOV BX,1L1: PUSH CXMOV CX,BX L2: MOV DL,'*'MOV AH,2INT 21HLOOP L2MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,1POP CXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。

汇编实验2顺序程序设计

汇编实验2顺序程序设计

汇编实验2顺序程序设计汇编实验⼆顺序结构程序设计实验⽬的:(1)掌握汇编语⾔程序上机过程。

(2)掌握顺序结构程序调试的⽅法。

实验内容:调试查表程序内存中⾃TABLE开始的七个单元中连续存放着⾃然数0~6的⽴⽅值(⽴⽅值表),任⼀个数X(0≤X≤6)在FIRST单元中,要求查表找出X的⽴⽅值,存SECOND单元。

准备⼯作:1.进⼊D:2.建⽴⼀个⽂件夹hb, 即d:\hb3.将MASM和LINK复制到该⽂件夹中4.单击“开始”-“程序”-“附件”-“命令提⽰符”5.输⼊“d:\”6.输⼊“cd hb”操作步骤:1.输⼊源程序: EDIT d:\hb\cb.asm在EDIT编辑环境File菜单下选择Save存盘,选择Exit退出编辑环境2.汇编源程序A>MASM CB↙Microsoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Copr 1981,1988 All rights reserved.Object filename [CB.OBJ]:_↙Source listing [NUL.LST]:↙Cross-reference [NUL.CRF]:↙51394+389950 Bytes symbol space free0 Warning Errors0 Severe ErrorsA>3.连接⽬标程序A>LINKMicrosoft (R) Overlay Linker Version 3.64Copyright (C) Microsoft Corp 1983-1988. All rights reserved.Object Modules [.OBJ]:CB↙Run File [NUL.MAP]:↙Libraries [.LIB]: ↙显⽰0个错误才能进⾏下⼀步LINK操作4.执⾏程序A>B没有任何结果输出,原因是程序中没有安排显⽰输出,结果保存在内存单元中。

分支程序设计实验实验报告

分支程序设计实验实验报告
MOV B,A
MUL AB
MOV DPTR,#2001H ;低位存入片外RAM中2001H
MOVX @DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A;高位存入片外RAM中2002H
STOP:SJMP $
END
2)
ORG 0000H
MOV R0,#0;R0,R1,R2置0
MOV R1,#0
MOV DPTR,#2000H
MOVX @DPTR,A ;将数存入片外RAM
MOV DPTR,#2000H
MOVX A,@DPTR;从片外RAM中取数X
MOV R7,A
CLR C
MOV R0,#40H;对X的值进行比较
SUBB A,R0
JNCMUTI
MOV R1,#20H
CLR C
MOV A,R1
SUBB A,R7
MOV R0,#0;
MOV P2,#0;
INC R1;分钟计数
MOV A,R1
ACALL OUTPUT;转化为bcd码
MOV P1,A
CJNE R1,#60,START;60进制判断
MOV R1,#0;
MOV P1,#0;
INC R2;时钟计数
MOV A,R2;
ACALL OUTPUT;计算bcd码
3.4位十进制加、减1计数程序思路:低位的个位和十位赋给一个寄存器,而将高位即百位千位赋给另外一个寄存器,通过循环程序使低位数循环100次即向高位进位或借位,高位循环100次后即回归初始状态,同时设计两个子函数分别执行加一、减一操作。其中,用P3的第7位的状态实现对计数与否的控制。
三、资源分配:
1.分支函数程序:A:累加器C:位操作B:做乘方的寄存器DPTR:片外寻址指针2000H、2001H、2002H:片外存储空间

实验二 顺序和分支程序设计

实验二 顺序和分支程序设计

CODE SEGMENT ’CODE’ ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,VARY1 MOV CX,VARY2 CMP BX,CX JGE FINISH MOV DX,BX MOV BX,CX MOV CX,DX MOV VARY1,BX MOV VARY2,CX FINISH: MOV AH,4CH INT 21H CODE ENDS END START
思考题
① 根据结果分析程序并写出程序的功能。
② 找出与MOV DX,OFFSET INPUT等价的指令。 ③ 找出与AND AL,0FH等价的指令。 ④ 找出与ADD AL,AL等价的指令。 ⑤ 变量TAB的类型是否可以改成DB?
2.分支程序设计 【程序功能】 比较变量VARY1和VARY2中两个带符号数 的大小,将较大者放入VARY1,较小者放入 VARY2。 【实验程序】fenzhi.asm DATA SEGMENT VARY1 DW –12 VARY2 DW 34 DATA ENDS
实 验 二
顺序和分支程序设计
实验目的、内容和程序
【实验目的】 了解顺序和分支程序的结构,掌握顺序和分支程序设计方法。 【实验内容】 在微机上编辑、汇编并执行程序,观察结果,做思考题。 1.顺序程序设计 【实验程序】shunxu.asm DATA SEGMENT INPUT DB 'PLEASE INPUT X(0-9):$' TAB DW 0,1,8,27,64,125,216,343,512,729 X DB ? XXX DW ? DATA ENDS
CODE SEG:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET INPUT MOV AH,9 INT 21H MOV AH,1 INT 21H AND AL,0FH MOV X,AL ADD AL,AL MOV BL,AL MOV BH,0 MOV AX,TAB[BX] MOV XXX,AX MOV AH,4CH INT 21H CODE ENDS END START

实验二 顺序分支程序设计

实验二 顺序分支程序设计

顺序分支程序设计
2、实验目的
利用二进制加法运算和符号函数实例, 利用二进制加法运算和符号函数实例,了 解顺序与分支结构程序,掌握顺序/ 解顺序与分支结构程序,掌握顺序/分支结构 程序的编程方法,掌握运算类指令、 程序的编程方法,掌握运算类指令、跳转指令 的使用, 的使用,了解运算类指令对各状态标志位的影 响及其测试方法, 响及其测试方法,进一步了解汇编程序上机调 试的方法,检查结果的正确性。 试的方法,检查结果的正确性。
附录
编写计
1)顺序/分支结构程序框图 顺序/
开始 开始 为X赋初值 为Y赋初值 X与Y相加 和送Z 结束 -1→Y X≥0? N
为X赋初值
Y A=0? Y 0→Y 结束 N
1→Y
顺序结构
分支结构
2)参考程序
DATA SEGMENT XL DW ? ;在此给 X 低位赋值 XH DW ? ;在此给 X 高位赋值 YL DW ? ;在此给 Y 低位赋值 YH DW ? ;在此给 Y 高位赋值 ZL DW ? ZH DW ? DATA ENDS CODE SEGMENT CS:CODE,DS: ASSUME CS:CODE,DS:DATA START: AX, START: MOV AX,DATA AX, MOV AX,XL AX, ADD AX,YL ZL, MOV ZL,AX AX, MOV AX,XH AX, ADC AX,YH ZH, MOV ZH,AX A1: A1: JMP A1 CODE ENDS END START 低位送AX ;X 低位送AX 低位加Y ;X 低位加Y 低位 ;存低位和 高位送AX ;X 高位送AX 高位加Y ;X 高位加Y 高位
数据分析并记录
3)根据上机操作进行记录(内容2)参考程序P110) 根据上机操作进行记录(内容2 参考程序P110) P110 对于内容1 对于内容1)设置几组数据进行记录 内容1 内容1) XH XL YH YL

实验二8086汇编语言之分支循环程序设计

实验二8086汇编语言之分支循环程序设计

实验二8086汇编语言之分支、循环程序设计【实验目的】1.掌握循环结构程序设计的方法;2.掌握数据块传送程序设计的方法;3.掌握串传送指令的应用。

【实验内容】1.编写程序实现将数据段STR1单元开始的20个字符移到STR2开始的存储区。

假设STRI+20>STR2,可以用串传送指令,也可以用MOV传送指令。

该题目要求掌握单循环程序设计方法。

为了实现指定功能,应从以下几个方面考虑:(1)数据串操作的起始位置从高地址还是从低地址开始。

(2)确定使用串传送指令,还是用MOV指令。

(3)确定循环程序的结构。

2.如果要求字符串从键盘中输入,应如何设计程序?3.用子程序方法,且不使用MOVSB指令来完成数据块的传输,应如何设计程序?【实验程序】DATA SEGMENTSTR1 DB 'WHAT IS YOUR NAME?',0AH,0DH,'$'CN EQU $-STR1STR2 EQU STR1+ CN-5DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX, OFFSET STR1MOV AH,09HINT 21HMOV SI ,OFFSET STR1MOV DI ,OFFSET STR2MOV CX ,CNADD SI ,CN-1ADD DI, CN-1STDREP MOVSBMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START【实验结果】数据段STR1单元开始的20个字符成功移到STR2开始的存储区【实验心得和体会】通过实验让我掌握了循环结构程序设计的方法、数据块传送程序设计的方法、串传送指令的应用。

更好地了解了语言之分支、循环程序设计让我知道汇编程序的奥秘,我对x86的指令有了新的认识,对一些指令操作更熟练啦。

实验二 汇编语言程序设计实验

实验二 汇编语言程序设计实验

实验二汇编语言程序设计实验一、实验目的:1)熟悉常用的汇编语言指令2)掌握程序的顺序结构、分支结构、循环结构和子程序结构3)掌握汇编语言程序调试方法二实验内容:(一)顺序结构(以下程序至少完成一个)(1)编制计算下列表达式的程序:w=x/2-y+4*z(其中x,y,z均为带符号字节类型的数);(2)编写程序完成两个已知双精度数(4字节)A和B相加并将结果存入双精度变量单元SUM 中(不考虑溢出);(3)从键盘输入一个小写字母,将其转化为大写字母显示出来。

(二)分支结构(以下程序至少完成一个)(1)设平面上一点P的直角坐标为(X,Y),X,Y为字类型符号数,试编制若P落在第i象限内,则令k=i;若P落在坐标轴,则令k=0的程序;(2)编写一程序,把变量BUFX和BUFY中较大者存入BUFZ中,若两者相等,则把其中之一存入BUFZ中。

假设变量存放的是8位无符号数;(3)设变量BUFX为16位带符号数,将其符号状态保存在SIGNX,即如果BUGFX大于等于0,保存0;如果小于0,则保存-1。

(4)BUFX,BUFY和BUFZ是3个有符号十六进制数,编写一个比较相等关系的程序,如果这三个数都不相等,则显示0,如果3个数中有两个相等,则显示1,如果3个数都相等,则显示2.(三)循环结构(以下程序至少完成一个)(1)编程序将符号字数组ARRAYW中的正负数分别送入正数数组PLUS和负数数组MINUS中,同时把0元素的个数送入字变量ZERON;(2)编程序统计16位符号数组ARRAY中的奇数和偶数个数,将奇数个数存入EVENN中,偶数个数存入数组ODDN中。

(3)设有一个数组存放学生的成绩,编写程序统计各分数段学生人数,90-100分人数存入A中,80-89分人数存入B中,70-79分人数存入C中,60-69分人数存入D中,0-59分人数存入E中。

三、撰写实验报告,画出程序流程图,写出源程序,截图给出调试过程和运行结果。

汇编语言实验2-顺序程序设计

汇编语言实验2-顺序程序设计

汇编语言实验报告Assembly Language Programming Lab Reports______________________________________________________________________________班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________实验顺序:___实验二____ 实验名称: ___________顺序程序设计________________ 实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________一.实验目的1.掌握非压缩的BCD码运算及其调整办法。

2.掌握Dos功能调用int 21h的1,2,9,10号功能。

3.掌握Bios功能调用int 10h的3号功能。

______________________________________________________________________________二.实验环境操作系统:windows xp编译程序:masm 5.0______________________________________________________________________________三.实验原理1.dos功能调用,利用10号dos功能调用,输入一串字符串,利用9号dos功能调用,输出显示之前输入的字符串代码如下:2.利用int10h获得光标的行列号,算出相应在显存的位置,输出想要的字符代码如下:3.输入是转化由ascii码转成实际十六进制数,mul相乘后,采用非压缩bcd码相乘调整aam,高位低位分别采用非进位加法和进位加法,最后转回ascii码输出代码如下:______________________________________________________________________________四.实验步骤及结果分析1.Dos功能调用。

汇编语言顺序程序设计实验报告

汇编语言顺序程序设计实验报告

实验名称:汇编语言顺序程序设计实验报告实验目的:通过本次实验,学生能够掌握使用汇编语言编写顺序程序的基本方法,理解汇编语言的基本结构和运行机制。

实验内容:1. 汇编语言基础知识1.1 汇编语言的概念1.2 汇编语言的特点1.3 汇编语言的应用领域2. 汇编语言程序设计2.1 程序设计的基本流程2.2 程序设计的基本步骤2.3 汇编语言程序设计的规范与技巧3. 实验步骤3.1 确定实验题目和要求3.2 分析实验任务,设计程序流程图3.3 编写汇编程序3.4 调试程序,确保程序正确运行3.5 编写实验报告4. 实验报告要求4.1 实验题目4.2 实验目的4.3 实验内容和步骤4.4 程序设计思路和实现方法4.5 实验结果分析和讨论4.6 实验心得体会实验过程:1. 确定实验题目和要求本次实验的题目为“汇编语言顺序程序设计”,要求学生使用汇编语言编写一个顺序程序,实现指定的功能要求。

2. 分析实验任务,设计程序流程图在开始编写汇编程序之前,我们首先要明确实验的功能需求,然后设计程序的流程图,规划程序的整体结构。

3. 编写汇编程序在设计好程序流程后,根据汇编语言的语法规则,编写相应的程序代码,并确保程序的逻辑正确,语法无误。

4. 调试程序,确保程序正确运行编写完成程序后,需要对程序进行调试,逐步检查程序运行过程中的各个环节,发现并修复可能存在的错误。

5. 编写实验报告我们需要撰写本次实验的实验报告,详细记录实验的整体过程,包括程序设计思路、程序实现方法、实验结果分析和讨论,以及实验心得体会。

实验结果分析和讨论:经过本次实验,我们掌握了汇编语言顺序程序设计的基本方法和技巧,了解了汇编语言程序设计的规范和要求。

在实验过程中,我们遇到了一些问题和困难,但通过不懈的努力和团队合作,最终成功完成了实验任务,并取得了令人满意的成绩。

实验心得体会:通过本次实验,我们深刻认识到汇编语言在计算机领域中的重要性和应用价值,同时也意识到汇编语言程序设计的复杂性和技术挑战。

实验二 结构化汇编程序设计(分支和循环程序)实验报告

实验二  结构化汇编程序设计(分支和循环程序)实验报告

沈阳工程学院学生实验报告实验室名称:微机原理实验室实验课程名称:实验项目名称:结构化程序设计实验实验日期:20 年月日班级:姓名:学号:指导教师:批阅教师:成绩:一.实验目的1.学习条件转移类指令以及分支程序设计方法。

2.学习循环控制类指令以及循环程序设计方法。

3.熟练掌握Wmd86调试软件的使用及程序运行、调试方法。

二.实验设备PC机一台,TD-PITE微机原理实验教学系统一台。

三.实验内容程序1:根据X的范围求Y的值,当X<5时,Y= —X;当X>=5且X<10时,Y=X+5;当X>=10时,Y=X+20。

假设X、Y均为带符号数。

请将程序代码补充完整。

DA TA SEGMENTX DB 17Y DB ?( )CODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATA( )MOV AL,X( )JGE GE5NEG AL( )GE5: CMP AL,10JGE GE10( )JMP EXITGE10:ADD AL,20EXIT:MOV Y,ALHLT ; (接右侧)CODE ENDSEND START程序2:有一组字节类型数据DATA,数据个数在COUNT中。

编程求出DATA中正数、负数及零的个数,将结果分别保存在D1、D2、D3中。

请将程序代码补充完整。

MYDATA SEGMENTDATA DB -1,15,-58,4,-7,0,0,9,-12,45,5COUNT EQU $-DA TAD1 DB 0 ;存放正数个数D2 DB 0 ;存放负数个数D3 DB 0 ;存放0的个数MYDATA ENDSMYCODE SEGMENTASSUME CS:MYCODE,DS:MYDA TASTART:MOV AX, MYDATAMOV DS, AX( )MOV CX, COUNTXOR BL, BL ;存放正数个数XOR BH, BH ;存放负数个数( );存放0的个数NEXT: MOV AL, [SI]CMP AL, 0 ; (接下页)结构化程序设计实验JG ZHENGJL FUINC DLJMP GOON ZHENG: ( )JMP GOONFU: INC BHGOON: INC SI ; (接右侧)LOOP NEXT( )MOV D2,BHMOV D3,DLHLTMYCODE ENDS( )四.实验步骤1.运行Wmd86调试软件,先建立( ),然后编写实验程序1,经( )、链接无误后,进入调试状态。

汇编实验报告:汇编程序的汇编及运行_顺序程序设计_分支循环程序设计_子程序设计_dos功能调用

汇编实验报告:汇编程序的汇编及运行_顺序程序设计_分支循环程序设计_子程序设计_dos功能调用

福建农林大学东方学院信息工程类实验报告课程名称:汇编语言*名:***系:计算机系专业:电子信息工程年级:2010学号:1050302103指导教师:职称:2012年 6 月17 日福建农林大学东方学院信息工程类实验报告系:计算机系专业:电子信息工程年级: 10 姓名:廖少兵学号: 1050302103 实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验的原理和主要仪器设备IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.操作方法及实验步骤编写各代码并存储为源程序asm文件,对其进行汇编、连接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM技术原理与应用
实验报告
实验2 顺序与分支汇编语言程序设计实验
专业电子信息工程
班级14电信班
学生姓名陈定光
学号2014010243101
指导教师曹计昌
2017年4月19 日
实验2 顺序与分支汇编语言程序设计实验
1、实验目的
(1)掌握顺序结构汇编语言程序设计;
(2)掌握分支结构汇编语言程序设计;
(3)掌握AXD环境下顺序结构和分支结构汇编语言程序的运行、调试。

2、实验要求
1、实验必须在在ADS1.2环境下进行。

2、工程名、汇编语言源文件名按照下面规则命名:
工程名:pj+学号最后4位+其它字符
汇编语言源文件名:p+学号最后4位+其它字符+.s
例如:张维智同学学号最后4位是3134
因此,pj3134、pj3134a、pj31341等都是允许的工程名;而 p3134a.s、p3134b.s等都是允许的源文件名。

3、实验报告中需要说明实验中在ADS、AXD环境下进行的实际操作;
4、实验报告中应给出实际的实验操作、编写的源程序、及计算机的调试观察结果;
5、按照规定格式打印实验报告。

3、实验内容
1、编写程序p2xxxx1.s完成下面任务:
(1)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8;
分析:如上图显示,寄存器r1-r8分别是存放1-8
(2)用STMIA指令将R1-R8保存到刚好能够存储8个字数据ARY_A数组中。

分析:如上图显示,地址0x8058-0x8078分别存放1-8
(3)用STMIB指令将R1-R8保存到刚好能够存储8个字数据ARY_B数组中。

分析:如上图显示,地址0x8088-0x80A7分别存放1-8
(4)用STMDA指令将R1-R8保存到刚好能够存储8个字数据ARY_C数组中。

分析:如上图显示,地址0x8094-0x80B3分别存放1-8
(5)用STMDB指令将R1-R8保存到刚好能够存储8个字数据ARY_D数组中。

(6)用LDMIA指令将ARY_A数组中数据5、6、7、8传送到R1-R4寄存器。

分析:如上图图中的方框图的数据显示,r1=5,r2=5,r3=7,r4=8 (7)用LDMIB指令将ARY_A数组中数据1、2、3、4传送到R5-R8寄存器。

分析:如上图图中的方框图的数据显示,r5=1,r6=2,r7=3,r8=4
2、编写程序p2xxxx2.s完成下面任务:
(1)创建由10个字元素的满递减堆栈。

并将SP指向栈底。

分析:如上图显示,寄存器r0-r9分别存放0-9一共10元素,同时地址0Xffffffd8-0xffffffff分别存放着0-9,SP指向栈底
(2)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8,再用STMFD指令将R1-R8寄存器压栈。

观察堆栈数据和SP。

分析:如上图显示,寄存器r1-r8分别存放1-8
分析:用STMFD指令将R1-R8寄存器压栈,如上图显示,地址0xffffffe0-oxfffffff分别存放1-8,每个数字4位
(3)用LDMFD指令将栈中8个数据依次出栈并传送给R3-R10寄存器。

分析:如上图显示,寄存器r3-r10分别存放1-8
3、编写程序p2xxxx3.s完成下面任务:
(1)开放IRQ向量中断,N标志置1;并给出程序执行前后cpsr的值。

执行之前:
执行后
(2)禁止IRQ向量中断,N标志清零;并给出程序执行前后cpsr的值。

执行之前
执行后
(3)开放快中断,C标志置1;并给出程序执行前后cpsr的值。

执行之前
执行后
(4)禁止快中断,C标志清零;并给出程序执行前后cpsr的值。

执行之前
执行后
4、若两个条件均成立,则将两个数相加。

其C代码为:if((a!=10)&&(b!=20)) a+=b;
编写能够实现上述C代码的汇编语言源程序p2xxxx4.s,R0为a,R1为b。

然后进行汇编、调试、并给出运行结果。

程序代码:AREA EX4,CODE,READONLY
ENTRY
CODE32
START
CMP R0,#10;R0比较10
CMPNE R1,#20;不等于20
ADDNE R0,R0,R1;R0=R0+R1
END
1、创建工程与源文件,写入程序代码进行编译、调试,显示代码正确
分析:设R0=1,设R1=3, 如上图显示,寄存器r0=1,r1=3
分析:设R0=1,设R1=3, 如上图显示,执行程序后,寄存器r0=4,r1=3
5、设有内存中有op1、op2两个数据。

编程p2xxxx5.s完成下面任务:
(1)当op1>0时,做op1+op2,结果送R8寄存器;
(2)当op1=0时,做op1+op2<<2;结果送R9寄存器;
(3)当op1<0时,做op2-op1,结果送R10寄存器;
分别就op1=1、op2=2;op1=0、op2=2;op1=-1、op2=2;对所编写程序进行测试,记录实验结果。

程序代码:AREA EX5,CODE,READONLY
ENTRY
CODE32
START
MOV R0,#1;R0=1
MOV R1,#2;R1=2
MOV R3,#4
MOV R8,#0
MOV R9,#0
MOV R10,#0
CMP R0,#0;1与0做比较
BEQ LOOP_2;如果op1=0,跳转到LOOP_2
BGT LOOP_3;如果op1>0;跳转到LOOP_3
SUB R10,R1,R0;否则op1<0,R10=R1-R0
B end0;结束跳转到结束
LOOP_2
ADD R0,R0,R1;R0=R0+R1
MUL R9,R0,R3;R9=R0*4
B end0;结束跳转到结束
LOOP_3
ADD R8,R0,R1;R8=R0+R1
B end0;结束跳转到结束
end0
NOP
END
1、创建工程与源文件后,进行编译、调式
2、开始AXD调试,开始状态
3、op1=1、op2=2时,执行op1+op2,结果送R8寄存器,R8寄存器的值:R8=3
4、op1=0、op2=2时,执行op1+op2<<2,结果送R9寄存器;先执行1+2,再<<2位,相当于乘以4,结果为(0+2)*4=8,值送寄存器R9
5、op1=-1、op2=2时,执行op2-op1,结果送R10寄存器;2-(-1)=3,值再送寄存器R10
6、选做观察下面程序中pc的变化情况。

AREA EX4_44,CODE,READONLY
ENTRY
CODE32
START
CMP R0,#4 ;与4 比较
;ADDLT PC,PC,R0,LSL #2 ;小于4 则根据R0 计算跳转地址,并用该地址修改PC ADDLT R1,R1,R0,LSL #2
ADDLT PC,PC,R1
B method_d ;大于4 则程序跳转到默认分支段执行
B method_0 ;分支表结构,其分支号由R0 决定,取值范围为0~4
B method_1
B method_2
B method_3
B method_4
method_0
MOV R1,#0
B end0
method_1
MOV R1,#1
B end0
method_2
MOV R1,#2
B end0
method_3
MOV R1,#3
B end0
method_4
MOV R1,#4
B end0
method_d
MOV R1,#4
B end0
end0
NOP
END
1、创建工程与源文件后,经编译显示代码正确,进行调试,开始状态
分析:开始状态,pc=0x08000
分析:如上图中的方框图显示,单步执行step,pc=0x8004
分析:如上图中的方框图显示,单步执行step,pc=0x8008
分析:如上图中的方框图显示,单步执行step,pc=0x80010
分析:如上图中的方框图显示,单步执行step,pc=0x804c
分析:如上图中的方框图显示,单步执行step,pc=0x8050,r1=0x04
分析:如上图中的方框图显示,单步执行step,pc=0x8054
分析:如上图中的方框图显示,执行go,pc=0x04。

相关文档
最新文档