实验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

实验报告课程名称汇编语言程序设计实验项目实验二、分支与循环程序结构和设计实验仪器微机系统、汇编调试环境系别专业班级/学号学生姓名实验日期成绩指导教师宋平实验二分支与循环程序结构和设计一、实验目的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顺序程序设计汇编实验⼆顺序结构程序设计实验⽬的:(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:片外存储空间
  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。

相关文档
最新文档