实验01 汇编指令实验——作业1

合集下载

汇编作业1答案

汇编作业1答案

实验一查看cpu和内存,用机器指令和汇编指令编程姓名:高久凤班级:计算机一班学号:2010131122
一、实验步骤如下:
1、用E命令将指令写入内存
(1)用R命令查看、改变CPU寄存器的内容,使CS:IP指向DOS中的一段安全的空间(0:200——0:2ff)
(2)用E命令将机器码写入内存
(3)用T命令执行内存中的机器码,用R命令观察CPU中相关寄存器的内容变化如下:
2、用A命令将指令写入内存
(1)用R命令查看、改变CPU寄存器的内容,使CS:IP指向DOS中的一段安全的空间(0:200——0:2ff)
(2)用A命令将机器码写入内存
(3)用T命令执行内存中的机器码,用R命令观察CPU中相关寄存器的内容变化如下:
二、实验步骤如下:
1、用R命令修改CPU寄存器中内容使CS:IP指向2000:0;用a命令将计算2的
8次方的指令写入2000:0开始的内存单元中。

2、用T命令执行输入到2000:0内存中的指令,观察寄存器ax中内容的变化
三、查看内存中的内容(PC机主板上的ROM中的生产日期并试图改变它):
结论和分析:ROM寄存器为只读寄存器只能读不能写所以修改生产日期并未成功
四、向内存从b8100h开始的单元中填写数据
1、地址不变只改变写入内存中的数据:
2、下面写入内存中的数据不变,改变地址:
结论与分析:显示出一些符号,改变数据则符号也变,改变地址则显示的地址也跟着变。

汇编实验实验一

汇编实验实验一

实验一 MASM for Windows 环境下的汇编语言编程环境使用一、实验目的(1)掌握MASM for Windows 环境下的汇编语言编程环境使用;(2) 掌握汇编语言程序设计的基本流程;(3) 掌握8086/8088基本指令的使用方法和功能;(4) 熟练掌握DEBUG的使用方法。

二、实验基本原理运行“调试”命令,在提示符“-”下才能输入命令,在按“回车”后该命令才开始执行;命令是单个字母,命令和参数的大小写可混合输入:(1) DEBUG 使用的数以十六进制来表示;(2) DEBUG 中的命令不区分大小写。

1、R命令格式1:R功能1:显示所有寄存器中的内容。

格式2:R 寄存器名功能2:显示修改寄存器的内容。

2、D命令用 DEBUG 的 D 命令查看内存的内容;功能: 显示内存单元内容。

格式一:D起始位置DEBUG从起始位置显示128个字节的内容。

输入命令D 0C0B:100格式二:D 起始位置结束位置DEBUG 从起始位置一直显示到结束位置格式三: D 起始位置 L 长度DEBUG 从起始位置开始显示指定长度的内容3、E命令用 DEBUG 的 E 命令改写内存的内容。

格式一:E 起始地址字节值表功能:用字节值表中的值替换从“起始地址”开始的内存单元内容。

格式二:E 起始地址功能:采用提问的方式一个一个地改写内存单元的内容4、A命令功能:输入汇编指令。

格式:A 起始地址首先用A命令以汇编语言的形式输入程序,以D命令显示内存,输入的是汇编指令,DEBUG 把它们翻译成机器指令,以机器码写入内存。

5、U命令功能:反汇编,显示机器码所对应的汇编指令。

格式1:U[地址]功能1:从指定地址开始反汇编格式2:U 地址范围功能2:对指定的地址范围进行反汇编。

6、T命令格式:T[=地址]功能:从指定地址起执行一条语句后停下来,显示所有寄存器的内容及标志位的值与下一条将要执行的指令。

格式:T[=地址][x]功能:从指定的地址开始跟踪x 条指令。

汇编语言实验一

汇编语言实验一

实验一查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。

(3) 进入DebugDebug是在DOS方式下使用的程序。

我们在进入Debug前,应先进入到DOS方式。

用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。

②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。

(4) 用R命令查看、改变CPU寄存器的内容1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后按Enter键,将出现“:”作为输入提示,在后面输入要写入的数据后按Enter 键,即完成了对AX中内容的修改。

若想看一下修改的结果,可再用R命令查看(5) 用Debug的D命令查看内存中的内容1)格式:-d 段地址:偏移地址,Debug将列出从指定内存单元开始的128个内存单元的内容。

使用D命令,Debug将输出3部分内容,如图2.34所示。

中间是部分从指定地址开始的128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。

实验一 ARM汇编指令实验

实验一 ARM汇编指令实验

大连理工大学软件学院《嵌入式系统原理与设计》实验报告(每组一份,打印)姓名:刘华一学号:201492405 班级:软1411姓名:李军学号:201493076 班级:软日1401实验时间:16年9月30日实验室:嵌入式实验室指导教师:邱铁成绩:实验一:ARM汇编指令一、实验目的和要求1. 熟悉ARM Developer Suite v1.2集成开发环境2.ARM汇编语言指令功能训练二、实验原理和内容RAM是32位体系结构,每个内存单元是32位的,对于64位的数需要两个字才能存储。

题目:熟悉ARM Developer Suite v1.2集成开发环境逐条试验ARM汇编语言指令功能,并观寄存器\存储器的变化三、主要仪器设备及软件编程环境硬件:PC机软件:ARM Developer Suite v1.2集成开发环境,Windows 98/2000/NT/XP四、实验步骤与编程1.打开软件ARM Developer Suite v1.2,选择file中的新建,在project中选择第一个,输入project name2.在同一个界面选择file,建立一个.s文件,打开此文件后就可以在里面进行编写汇编指令3.输入示例代码后,在原有的project对话框中鼠标右键连接到你所建的工程文件下的.s文件,再点击编译。

4.在新弹出的界面中,打开左边的寄存器列表,再点击单步调试,就可以看到每条指令执行时相应寄存器的变化以及相应要执行的下一条指令。

五、实验数据与结果分析数据传送类指令:算数运算类指令:逻辑运算类指令:比较指令:乘法指令:六、讨论、建议由于对于软件尚未熟悉,且windows系统兼容性原因,在开始配置阶段浪费了较多时间,由于时间有限,只是大体练习了一遍,在批量读取及存储方面仍存在较大问题,需要回去后勤加练习。

汇编指令实验报告

汇编指令实验报告

汇编指令实验报告汇编指令实验报告汇编指令是计算机中非常重要的一部分,它们直接操作着计算机的硬件,实现各种功能。

在本次实验中,我们学习了汇编指令的基本知识,并通过实践掌握了它们的使用方法。

本文将对我们的实验过程进行详细的总结和分析。

实验一:汇编指令的基本概念和使用方法在实验的第一部分,我们首先了解了汇编指令的基本概念和使用方法。

汇编指令是一种低级语言,它直接操作计算机的寄存器和内存单元。

我们通过学习不同的指令集和指令格式,了解了如何使用汇编指令来实现各种功能。

在实验中,我们使用了一款常见的汇编语言工具,例如MASM(Microsoft Macro Assembler)和NASM(Netwide Assembler)。

通过这些工具,我们可以将汇编代码转换成可执行的机器码,并在计算机上运行。

实验二:汇编指令的应用实例在实验的第二部分,我们通过一些实际的应用实例,进一步加深了对汇编指令的理解和掌握。

我们学习了如何使用汇编指令来实现字符串处理、数学运算、条件判断等常见的功能。

例如,我们学习了如何使用汇编指令来实现字符串的反转功能。

通过对字符串的每个字符进行逆序排列,我们可以实现字符串的反转。

这个实例不仅帮助我们理解了汇编指令的基本操作,还锻炼了我们的逻辑思维能力。

实验三:汇编指令的性能优化在实验的第三部分,我们探讨了如何通过优化汇编指令来提升程序的性能。

通过对程序的瓶颈进行分析,我们可以找到一些可以改进的地方,并通过修改和优化汇编指令来提升程序的执行效率。

例如,我们学习了如何通过使用SIMD(Single Instruction Multiple Data)指令集来实现并行计算。

通过同时对多个数据进行操作,我们可以大大提高程序的运行速度。

这个实例不仅帮助我们理解了汇编指令的高级应用,还培养了我们的优化思维能力。

实验四:汇编指令的错误处理和调试技巧在实验的第四部分,我们学习了如何处理汇编指令中的错误,并掌握了一些常用的调试技巧。

汇编作业——精选推荐

汇编作业——精选推荐

汇编作业实验⼀顺序与分⽀程序设计⼀、实验⽬的1)掌握顺序程序设计⽅法。

2)掌握分⽀程序的结构及分⽀程序的设计,调试⽅法。

2) 学习数据传送及算术和逻辑运算指令的⽤法。

3) 熟悉在PC机上建⽴、汇编、连接、调试和运⾏汇编语⾔程序的过程。

⼆、实验内容1) 有⼀字变量BUF1是以原码表⽰的有符号数,要求将其转换为反码和补码,分别存⼊BUF2和BUF3单元,并在屏幕上显⽰出来。

2)有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。

相加若有进位不存⼊存储单元。

3) 在BUF和BUF+1、BUF+2单元分别放有⼀个⽆符号字节型数,编程序将其中最⼤数存⼊MAX单元,并在屏幕上显⽰。

4) 要求同上,只是⽐较的数为有符号数。

5) 将1000H 单元开始的10个字节数,采⽤奇偶校验,将奇数在前偶数在后仍存回原数据区。

本实验要求在DEBUG 调试状态下进⾏,包括汇编程序、运⾏程序、检查结果。

6) 从键盘上接收⼀位⼗进制数X ,计算Y 值,并以⼗六进制形式显⽰出来,Y 按下列公式计算。

===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y 7) 从键盘上接收两个⼀位⼗六进制数X 和Y ,然后再输⼊⼀个A-D 之间的⼀个字符,按下列要求计算。

a) 当输⼊字符为A ,则计算X+Y ,并以⼗六进制形式显⽰出来b) 当输⼊字符为B ,则计算|X-Y|,并以⼗六进制形式显⽰出来c) 当输⼊字符为C ,则计算X*Y ,并以⼗六进制形式显⽰出来d) 当输⼊字符为D ,则计算X/Y ,并以⼗六进制形式显⽰出来三、实验步骤1) 输⼊源程序。

2) 汇编、连接程序,⽣成.EXE⽂件,执⾏⽂件,检查结果。

源程序⼀:DATA SEGMENTBUF1 DW 9348HBUF2 DW 4 DUP(0),0AH,0DH,’$’BUF3 DW 4 DUP(0),’$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA BEGIN:MOV AX,DATAMOV DS,AXMOV AX,BUF1ADD AX,0JS NEXTMOV BUF2,AXMOV BUF3,AXJMP EEENEXT:AND AX,7FFFHNOT AXMOV BUF2,AXINC AXMOV BUF3,AX EEE: MOV CX,0004H MOV DI,OFFSET BUF2MOV DX,[DI]ADD DI,03BBB:MOV AX,DXAND AX,000FHCMP AL,0AHJB QQQADD AL,07HQQQ:ADD AL,30HMOV [DI],ALDEC DIPUSH CXMOV CL,04HSHR DX,CLPOP CXLOOP BBBMOV CX,0004HMOV SI, OFFSET BUF3CCC: MOV AX,DXAND AX,000FHCMP AL,0AHJB DDDADD AL,07HDDD:ADD AL,30HMOV [SI],ALDEC SIPUSH CXMOV CL,04HSHR DX, CLPOP CXLOOP CCCMOV DX,OFFSET BUF2MOV AH,09HINT 21HMOV DX,OFFSET BUF3MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND BEGIN运⾏结果为:ECB7 ECB8源程序⼆:DATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HQQQ: ADD AL, 30HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET A MOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START运⾏结果为:9B8A源程序三:STACK SEGMENT STACKDB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 70H,35H,1FHMAX DB 2 DUP(?),’$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX, DATA MOV DS, AXMOV AL, BUFCMP AL, BUF+1JNB LP1MOV AL, BUF+1LP1: CMP AL, BUF+2JAE LP2MOV AL, BUF+2LP2: MOV CX, 02HMOV DI, OFFSET MAXMOV DL, ALINC DILP3: AND AL, 0FHCMP AL, 0AHJB LP4ADD AL, 07HLP4: ADD AL, 30HMOV [DI],ALDEC DIPUSH CXMOV CL, 04SHR DL, CLPOP CXMOV AL, DLLOOP LP3MOV DX, OFFSET MAXMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND BEGIN运⾏结果为:70源程序四:STACK SEGMENT STACKDB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 98H,75H,32HMAX DB 2 DUP(?),’$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX, DATA MOV DS, AXMOV AL, BUFCMP AL, BUF+1JG LP1XCHG AL, BUF+1LP1: CMP AL, BUF+2JG LP2XCHG AL, BUF+2LP2: MOV MAX, ALMOV CX, 02HMOV DI, OFFSET MAXMOV DL, [DI]INC DILP3: MOV AL, DLAND AL, 0FHCMP AL, 0AHJB LP4ADD AL, 07HLP4: ADD AL, 30HMOV [DI],ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP LP3MOV DX, OFFSET MAXMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND BEGIN运⾏结果为:75源程序五:ORG 2000H2000 BE0010 MOV SI, 1000 2003 BF0910 MOV DI, 10092006 8A14 MOV DL, [SI]2008 80C200 ADD DL, 00200B 7B0B JPO 2018200D 8615 XCHG DL, [DI]200F 8814 MOV [SI], DL2011 4F DEC DI2012 39FE CMP SI, DI2014 7407 JE 201D2016 EBF0 JMP 20082018 46 INC SI2019 8A14 MOV DL, [SI]201B EBF5 JMP 2012201D F4 HLT四、实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。

单片机实验——汇编语言指令

单片机实验——汇编语言指令

成绩单片机原理及应用实验报告实验名称汇编语言指令实验班级姓名学号(后两位)指导教师实验日期实验一汇编语言指令一、实验目的1、掌握WAVE软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和断点设置等。

2、熟悉MCS-51单片机的指令系统。

二、实验内容完成以下内容:1、假定外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A中的内容是( 80H ):MOV DPTR,#2000HMOVX A,@DPTR注意:完成本实验,需完成题目的“假定”条件,将外部数据存储器2000H单元预先赋值,如何实现?2、执行下列指令后,(SP)的内容是(07H ),61H单元的内容是(25H ),62H单元的内容是( 80H).MOV SP,#60HMOV ACC,#25HMOV B,#80HPUSH ACCPUSH B3、执行下列指令后,A的内容是(85H),CY的内容是(1),AC的内容是(1),OV的内容是(1)。

MOV A,#85HMOV R0,#20HMOV 20H,#0AFHADD A,@R04、假定(A)=0FFH,执行下列指令后,A的内容是(86H ),R3的内容是(10H ),30H的内容是(OF1H或241),40H的内容是(01H )。

MOV R3,#0FHMOV 30H,#0F0HMOV R0,#40HMOV 40H,#00HINC AINC R3INC 30HINC @R05、假定(A)=059H,(R5)=73H,执行下列指令:ORG 0000HMOV A,#059HMOV R5,#73HADD A,R5DA AEND后,A的内容是(),CY的内容是()。

6、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CADDC A, 20H结果为:(A)= 45H CY=1 AC=1 OV=1 P=17、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CSUBB A, 20H结果为:(A)= CY= AC= OV= P=8、假定(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行下列指令:ORG 0000HMOV A,#0FHMOV R7,#19HMOV 30H,#00HMOV R1,#40HMOV 40H,#0FFHDEC ADEC R7DEC 30HDEC @R1END后,A的内容是(),R7的内容是(),30H的内容是(),40H的内容是()。

实验一 汇编语言基本指令操作练习

实验一 汇编语言基本指令操作练习

实验一汇编语言基本指令操作练习一、实验目的:1、掌握8086/8088基本指令的使用方法和功能。

2、初步了解汇编语言程序设计的基本结构和利用DEBUG调试程序的方法。

3、进一步熟悉汇编语言的上机过程。

二、上机实验指导:(一)利用DEBUG的A命令输入指令,做如下实验。

1、比较下面指令的区别:①MOVAX,2000H②MOVBX,[2000H]-D2*******;显示字存储单元DS:2000的内容3ADC:20005A58ZX-R;显示指令执行前AX,BX的内容AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0100NVUPEIPLNZNAPONC3ADC:0100858CFFF3TESTCX,[SI+F3FF]DS:F3FF=74C0-A;利用A命令输入汇编指令3ADC:0100MOVAX,20003ADC:0103MOVBX,[2000]3ADC:0107INT3;此中断为断点中断,使程序执行暂停3ADC:0108-G;不指定地址,从当前CS:IP处执行AX=2000BX=585ACX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0107NVUPEIPLNZNAPONC3ADC:0107CCINT3;指令执行后,AX=2000H,BX=585AH2、以寄存器BX作为地址指针,从BX所指的存储单元开始起,连续存放着两个无符号数(字操作数),编程求它们的和,并将结果存放在这两个数之后。

-RBX;显示BX寄存器中的内容(BX=0000h)BX0000:;回车-D0*******;显示DS:0000到DS:0005的内容(BX所指的三个字操作数),如BX不为0000H,自己修改范围。

汇编实验一实验报告

汇编实验一实验报告

汇编实验⼀实验报告汇编语⾔程序设计实验报告课程名称汇编语⾔程序设计班级姓名学号指导教师汇编语⾔程序设计实验⼀DEBUG 程序使⽤技巧1.寄存器和内存开始Debug 程序。

输⼊“Q ” 退出程序。

再次启动Debug。

输⼊“r ”来显⽰CPU的当前状态和寄存器中的当前内容。

输⼊“r AX ”和“1234”,AX 寄存器中的内容变为1234。

输⼊“r DS ”和“2000”,DS 寄存器中的内容变为2000。

输⼊“d DS:1000 ”来显⽰数据段中80H 字节数据,把数据抄在这⾥:输⼊“f DS:1000 1100 77 ”再显⽰⼀次这80H 字节。

判断这条指令的作⽤是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输⼊“d 2000:1000 ”来显⽰数据段中80H 字节数据。

观察与前⾯的数据有⽆不同。

输⼊“d 1900:0100 ”和“d 1ff0:0100 ”来显⽰两个存储段中的内容。

⽐较其中2000:0000 段中的数据。

相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

答:相同段落中的数据相同, 程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

2.输⼊机器码,使⽤单步和断点退出Debug,再重新启动Debug。

输⼊“r ”观察CPU 的状态,下⼀条指令是什么?答:下⼀条指令是ADD [BX+SI],AL使⽤两种⽅式输⼊⼀段程序,第⼀种⽅式:直接输⼊机器码。

输⼊“u ”来显⽰程序段中的指令序列。

然后输⼊“d CS:100 ” 来显⽰代码段中的数据。

观察显⽰内容。

“u CS:100 106 ”做反汇编,就是显⽰出汇编语句。

将这⼏句汇编语句记录下来:使⽤输⼊“r ”观察CPU 的状态,使⽤“t ”来跟踪程序,直⾄最后⼀条指令执⾏完毕。

注意,跟踪程序前,要让IP 寄存器中的值是100H。

汇编作业——精选推荐

汇编作业——精选推荐

汇编作业《汇编语⾔》上机实验实验⼀DEBUG的应⽤及指令系统练习⼀、类别:验证型实验⼆、实验⽬的:掌握常⽤DOS命令、DEBUG常⽤命令、基本指令和伪指令三、实验内容:1.复习DOS命令:CD, DIR, DEL, RENAME, COPY。

2.熟悉DEBUG命令:A, D, E, F, H, R, T, U, G, N, W, L及Q的使⽤⽅法。

3.利⽤DEBUG理解:8086/8088常⽤指令的功能。

4.利⽤DEBUG掌握:内存操作数及其⼏种寻址⽅式。

5.利⽤DEBUG进⾏简单的编程:求累加和程序和多字节加减法程序练习。

四、要求:1.熟悉DEBUG的操作界⾯;2.能够进⾏DEBUG环境下的基本操作;3.理解8086指令的基本指令和伪指令操作意义和格式;4.完成实验报告。

五、仪器设备:微型计算机六、注意事项:DEBUG操作时,防⽌破坏系统熟练运⽤DOS常⽤命令进⾏⽂件操作。

实验内容及步骤(⼀)DOS常⽤命令练习1、开机后,切换到命令提⽰符窗⼝下,出现提⽰符后键⼊命令DIR, 查看此⽬录下⽂件。

2、键⼊命令CD..进⼊上级⽬录,再查看此⽬录下所有⽂件。

3、将⼀个u盘插到u盘驱动器中,⽤DIR命令查看盘上⽂件。

4、⽤命令 COPY /doc/854bf052effdc8d376eeaeaad1f34693daef1084.html BUG 复制⼀个⽂件。

5、⽤命令 RENAME BUG BG 将BUG ⽂件改为BG。

6、⽤命令 DEL BG 将⽂件BG删除。

在操作时要注意提⽰信息,并按提⽰操作。

(⼆)DEBUG 命令使⽤1、键⼊ DEBUG 进⼊ DEBUG 控制状态,显⽰提⽰符 '- '。

2、⽤命令 F100 10F 'A' 将'A'的ASCII码填⼊内存。

3、⽤命令 D100 10F 观察内存中的⼗六进制码及屏幕右边的ASCII字符。

4、⽤命令 F110 11F 41 重复上⼆项实验,观察结果并⽐较。

汇编语言实验一

汇编语言实验一

用CD命令进入Program Files子目录,并查看子目录中的文件。

进入DEBUG,用D命令查看数据段中0100H—0200H单元的内容。

用U命令查看代码段中0100H开始的程序。

用R命令查看并修改IP寄存器的值为0.
用E命令修改数据段5号,6号单元的内容为12、34。

两个操作数相减运算,结果放在数据段的16号单元
一、实验结果分析(运行过程中出现的问题、如何解决的;实验过程中的经验及教训)
1.记不住关键的程序命令,每次再想执行的之后得看书之后输入。

2.各种的寻址的方式记不住,太多,很容易记错,用错。

3.在进行减法运算时,保存的位置出错过。

4.一些快捷键不会利用。

二、实验拓展
立即寻址方式。

汇编语言实验1用机器指令和汇编指令编程

汇编语言实验1用机器指令和汇编指令编程

汇编语⾔实验1⽤机器指令和汇编指令编程实验1 ⽤机器指令和汇编指令编程⼀、实验⽬的1. 熟练掌握使⽤debug⼯具编写和调试x86汇编命令的⽅法2. 掌握8086CPU、寄存器、内存的基础知识3. 理解并掌握内存中多字节数据的存放:⼩端法4. 理解并掌握「栈」内存空间的特性和使⽤5. 掌握指令mov, add, sub, jmp, push, pop的基础⽤法⼆、实验内容1. 教材实验1(P35)2. 教材实验2(P71)为了便于验证实验结果,对「2. 实验任务」的(1)做如下两点调整:3. 在使⽤ a 命令输⼊指令调试之前,先使⽤ e 命令将内存单元 0022:0 ~0022:7连续 8 个字节数据修改为 50H, 51H, 52H, 53H, 54H, 55H, 56H, 57H4. 将 P74 实验任务(1)中第1⾏的 mov ax, ffff →改为 mov ax, 0022三、实验结论1. 教材实验1结论实验任务(1)1. 采⽤e命令从0:200内存开始写⼊4⾏命令的机器码,并⽤d命令进⾏查看,可以看到写⼊成功。

由于t命令为执⾏CS:IP指向内存单元处命令,需要⽤r命令将CS:IP置为0:200。

2. 再次使⽤r命令查看寄存器,可以看到CS:IP已经指向0:200,下⼀条命令与输⼊命令⼀致。

使⽤4次t命令,可以看到调试结果。

3. 采⽤a命令直接输⼊指令。

a命令在不带参数的情况下默认从CS:IP开始输⼊,因此不需要设置CS:IP的值。

4. ⽤d命令可以看到输⼊成功。

5. 再次使⽤r命令查看寄存器,可以看到下⼀条命令与输⼊的第⼀条命令⼀致。

使⽤4次t命令,可以看到调试结果。

实验任务(2)1. 采⽤a命令向2000:0输⼊指令。

2. 使⽤d命令和u命令可以看到输⼊成功。

3. 观察代码可以发现,该段代码为循环对ax做乘2运算,因此控制好运⾏次数即可得到2的8次⽅。

⽤r命令可以看到CS:IP不为2000:0,调整后开始调试:4. 重复8次add运算,最终得到2的8次⽅为1000H(即ax的值)实验任务(3)1. 使⽤d命令查看内存FFFOOH~FFFFFH中的内容2. 可以从右侧的ASCII码预览中看到最后⼀⾏有01/01/92的字样,推测为⽣产⽇期。

汇编实验一 Debug命令练习

汇编实验一 Debug命令练习

汇编上机实验一 调试程序 DEBUG 命令练习
字符用“.”表示。 练习题目:
1. 观看数据段中偏移地址为 0100 开始的前 128 个单元的内容 2.观看数据段接下来的 128 个单元内容 3. 观看数据段中偏移地址为 0100 开始的 8 个单元的内容
四、 E 命令练习
E 命令功能:修改内存单元的内容。 格式:E 地址[内容表] 说明:具有两种操作:1)用内容表中的内容替换制定地址的一个或多个字节的内容;2)允 许顺序显示和修改字节内容,不修改的可按空格。如只键入一个地址偏移量,则缺省的段再 DS 中。按↙键结束命令。 练习题目:
U 反汇编命令功能:从指定的地址反汇编 32 字节的汇编语句,同时,显示出他们的地址、 十六进制值以及对应的汇编语句。 格式:U[地址]/[范围] 说明:地址、范围均缺省时,则以前条 U 命令反汇编的最后一条命令后的单元作为起始地 址,若以前未用过的 U 命令则以 CS:100 作为起始地址。
T 跟踪命令功能:逐条跟踪程序。 格式:T[=地址][值] 说明:执行自指定地址开始的一条或给定值条指令,每条指令执行完都会显示出所有寄存器 和标志位的内容,未给定地址则以 CS:IP 开始执行。
练习题目:
1.求出下列数据与 62A0H 之和,并根据结果设置标志位 SF,ZF,CF,OF 的值
①4321H 解:① 6 2 A 0 H
+ 4321H A5C1H
②1234H ③CFA0H ④9D60H OF=1,SF=1,ZF=0,CF=0
2、上机验证结果
步骤:-A↙ mov ax,62a0↙ add ax,4321↙ ↙
二、 R 命令练习
R 命令功能:显示和修改寄存器内容和标志。 格式:R 寄存器名 说明:显示/修改单个寄存器内容,例如:R AX↙

Thumb汇编指令实验一

Thumb汇编指令实验一

Thumb汇编指令实验一实验目的通过实验掌握ARM处理器16位汇编指令的使用方法。

实验设备●硬件:PC机。

●软件:ADS1.2集成开发环境,Windows 2000/XP/2003。

实验内容●使用Thumb汇编语言,完成基本的寄存器/存储器访问,以及基本的算术的逻辑/运算;●使用Thumb汇编语言,完成较为复杂的程序分支、PUSH/POP的使用,领会立即数大小的限制,并体会ARM与Thumb的区别。

实验原理(1)ARM处理器有两种工作状态:⏹ARM状态:32-bit,按字排列的ARM指令集。

⏹Thumb状态:16-bit,按半字排列的Thumb指令集。

引入Thumb状态的原因有以下两点:⏹优化了的代码密度,Thumb指令集是ARM指令集的一个子集。

⏹在窄内存(16位)的情况下,Thumb状态指令集有更好的表现。

注意:因为Thumb状态下是半字寻址,所以PC寄存器的最低位bit[0]为0,而ARM状态下为字寻址,所以PC寄存器的bit[1:0]为0。

(2)ARM/Thumb状态的切换:进入Thumb状态:⏹当操作数寄存器的状态位为1时,执行BX指令进入Thumb状态。

⏹如果处理器在Thumb状态进入异常(ARM状态),则当从异常返回时,自动切换到Thumb状态。

进入ARM状态:⏹执行BX指令,并设置操作数寄存器的状态(bit[0])为0;⏹进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可以进入ARM状态。

(3)Thumb状态的寄存器结构:Thumb指令集是ARM指令集的一个子集,程序员可以直接访问的寄存器有R0~R7,PC,SP,LR,CPSR寄存器。

Thumb状态和ARM状态的寄存器对应关系如图1所示:图1 Thumb状态和ARM状态的寄存器对应关系实验步骤1. 打开Codewarrior For ARM Developer Suite,依次点击File->New,新建一个Thumb ARMInterworking Image工程,工程名取为Example,点击OK。

汇编实验一 实验报告

汇编实验一 实验报告

实验一查看CPU和内存用机器指令和汇编指令编程
一、实验目的
1.掌握debug的使用方法,会用基本的D,R命令查看、显示内存和寄存器
2.了解汇编指令编程的方法。

二、实验任务
1检查在存储器低端的BIOS数据区的内容。

(1)检查串行与并行端口
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2 考察ROM BIOS
目的:检查在存储器高端的ROM BIOS中的数据。

(1)检查版本通告
(2)检查ROM BIOS数据
3.用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改。

三、实验结果及分析
1、检查在存储器低端的BIOS数据区的内容
(1)检查串行与并行端口
说明:检查后发现有四个串行端口,分别是03F8、02F8、03E8、02E8;并行端口也有四个,分别是03BC、03BC、0378、0278、9FC0
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2、考察ROM BIOS (1)检查版本通告
(2)检查ROM BIOS数据
3、用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改
四、实验总结(心得、体会)
1、通过对检查在存储器低端的BIOS数据区的内容的查看,可以了解计算机的各种状态,而考察ROM BIOS可以鉴定计算机的出厂信息。

2、通过用D、R命令查看、显示内存和寄存器,可以了解计算机运行的过程步骤,并且可以通过偏移地址读取内容。

3、在读取时需要注意的是,在DEBUG显示中是低位至高位的显示,而我们需要的是高位至低位的显示方式,所以在操作时对于双字节的读取,需要将前后字节地址内容互换。

实验一 汇编指令实验

实验一 汇编指令实验

实验一汇编指令实验一、实验目的和要求1.了解Keil C51开发工具的使用方法,熟悉调试程序需要的工作窗口并能查看结果;2.通过在Keil C51开发工具环境下进行汇编程序调试,了解单片机在指令运行时单片机相应的工作寄存器、SFR、内存等部件发生的变化;3.练习程序编程调试的步骤。

二、实验环境及设备微机及Keil C51 的uVision2集成开发环境三、实验项目1.预习任务●本次实验调试的程序完成了什么任务?实验的结果是什么?预习并分析下列指令运行的结果,写出分析结果。

●了解uVision2 IDE and Debugger软件的功能和应用环境●清楚在该环境下调试汇编程序的步骤调试步骤:1)新建源程序2)将源程序加入项目3)汇编程序,根据提示修改源程序直至汇编通过4)连接程序5)运行程序调试运行方法:1)单步运行(不跟踪子程序)2)单步运行(跟踪子程序)3)设置断点4)连续运行到断点5)暂停6)连续运行7)CPU复位8)修改寄存器、存储器的数值2.在使用的微机上建立工作目录,将实验的源程序存放在该目录下。

注意,目录名和文件名均使用字母,不要用中文文件名。

3.程序调试并记录结果1)在工作目录下输入源程序,调试程序并纪录实验结果ORG 0000HLJMP 0030HORG 0030HCWORD: MOV A, #0C5H ;A= ,CWORD = (1)MOV DPTR, #0030H ;DPTR = (2)MOVX @DPTR, A ;(0010H)= ,PC= (3)MOV R0, #20HMOV @R0, A ;精确描述运行结果:(4)MOV R0, A ;A= ,R0=PUSH ACC ;SP= ,(SP)= (5)ANL A, #1FH ;A=MOVC A, @A+DPTR ;A = (6)INC DPTR ;DPTR = (7)MOVX @DPTR, A ;精确描述运行结果:MOV B, A ;B=POP ACC ;SP= ,PC= (8) CWORD1: SJMP CWORD1 ;CWORD1= ,该指令的机器码 (9) END2)了解上述汇编指令的含义,总结本次实验得到的经验;掌握用KEIL软件调试程序的一般方法和各种窗口的使用。

汇编实验一实验报告

汇编实验一实验报告

汇编实验一实验报告一、实验目的1.了解汇编语言的基本概念和基本语法。

2.掌握常见汇编指令的使用方法。

二、实验器材1.计算机一台。

2.汇编语言开发环境。

三、实验原理和方法1.汇编语言是低级程序语言,是计算机可以直接识别并执行的语言。

2.汇编语言采用助记符表示计算机指令,并且每一条汇编指令都对应一条机器指令。

四、实验过程及结果1.编写一个汇编程序,实现将两个数相加并输出结果的功能。

2.打开汇编语言开发环境,创建一个新的源文件。

3.在源文件中编写汇编程序,并保存。

4.汇编程序的伪指令section .data用于定义数据段,section .text用于定义代码段。

5.使用汇编指令mov将要相加的两个数赋值给寄存器,使用汇编指令add将两个数相加,并将结果保存到一个寄存器中。

6.使用汇编指令mov将结果从寄存器中取出,并输出到屏幕。

7.编译和运行汇编程序,查看结果是否正确。

五、实验结果分析经过编译和运行,实验程序顺利执行,结果正确输出。

通过这个实验,加深了对汇编语言的理解和掌握。

六、实验总结通过本次实验,我了解了汇编语言的基本概念和基本语法,并掌握了常见汇编指令的使用方法。

在实验过程中,我遇到了一些问题,如如何正确使用汇编指令以及如何调试程序等,但在同学和老师的帮助下,我顺利完成了实验,并且收获了很多。

通过这次实验,我深刻认识到汇编语言是一种非常底层的语言,需要对计算机底层原理有一定的了解,才能编写出正确的汇编程序。

同时,我也意识到汇编语言虽然复杂,但它的执行效率非常高,可以在一些特定场景下发挥出很大的作用。

总而言之,本次实验让我对汇编语言有了更深入的了解,也提高了我的编程能力。

希望在以后的学习中能够深入学习汇编语言,并能够熟练地使用它。

汇编语言实验答案(有截图)

汇编语言实验答案(有截图)

实验标题实验03_显示字符串、解除除法溢出问题、数值显示实验日期2011年12月20日实验人姓名实验人班级计09一实验作业1:显示字符串程序实验作业1的流程图:实验作业1的程序:assume cs:codedata segmentdb 'Welcome to masm!',0data endscode segmentstart:mov cl,2mov ax,datamov ds,axmov si,0call show_strover:mov ax,4c00hint 21hshow_str:mov di,8*160+3*2 ;指向指定的行列mov ax,0b800hmov es,ax ;显存地址s:mov ah,BYTE ptr [si]cmp ah,0 ;计算ah-0je over ;等于则转移到overmov BYTE ptr es:[di],ah ;写入字符inc dimov BYTE ptr es:[di],cl ;写入字符属性inc diinc sijmp short s ;转到标号处执行指令code endsend start实验作业1的截图:实验作业2:解除除法溢出问题实验作业2的流程图:实验作业2的程序:assume cs:codestack segmentdw 8 dup (0)stack endsdata segmentdw 8 dup (0)data endscode segmentstart: mov ax,stackmov ss,axmov sp,20hmov ax,datamov ds,axmov ax,4240hmov dx,000fhmov cx,0ah ;给被除数和除数赋值call divdwmov ax,4c00hint 21hdivdw:push bx ;避免寄存器冲突将调用前的数据压栈mov bx,0 ;将参数保存至ds:0之后的空间mov [bx],ax ;参数ax=[bx]mov [bx+2],dx ;参数dx=[bx+2]mov ax,[bx+2] ;H的低16位ax=[bx+2]mov dx,0 ;H的高16位dx为0div cx ;N=cx,运算H/Npush ax ;int(H/N)=ax,[rem(H/N)*65536+L]/N要使用ax,因此压栈;rem(H/N)=dx,正好是[rem(H/N)*65536+L]/N运算的高16位,因此省去压栈mov ax,[bx] ;L即低16位=[bx],高16位即rem(H/N),也就是现在的dxdiv cx ;运算[rem(H/N)*65536+L]/Nmov cx,dx ;第二次除法的余数dx即为返回值余数cx,ax即为返回值商的低16位ax(因此不动)pop dx ;第一次除法的商即为返回值商的高16位dx,因此出栈pop bxretcode endsend start实验作业2的截图:实验作业3:数值显示实验作业3的程序:assume cs:code,ds:data,ss:stackdata segmentdb 10 dup(0)data endsstack segmentdw 128 dup(0)stack endscode segmentstart:mov ax,stackmov ss,axmov sp,128mov ax,12660mov bx,datamov ds,bxmov si,0call dtocmov dh,8mov dl,3mov cl,2call show_strmov ax,4c00hint 21hdtoc:push axpush bxpush cxpush sipush dimov di,simov bx,10mov cx,0s:push cxmov cx,axjcxz enddtocpop cxmov dx,0div bxmov ds:[di],dladd byte ptr ds:[di],30h inc diinc cxjmp short s enddtoc:pop cxmov ds:[di],0dec dimov ax,cxmov bl,2div blmov cl,als1:mov al,ds:[di]mov bl,ds:[si]mov ds:[di],blmov ds:[si],alinc sidec diloop s1pop dipop sipop cxpop bxpop axretshow_str:push dxpush sipush dipush cxpush axmov ax,0b800hmov es,axmov ax,160mul dhmov dh,0add ax,dxadd ax,dxsub ax,2mov di,axmov ah,cloutput:mov ch,ds:[si]mov cl,0jcxz okmov byte ptr es:[di],chmov byte ptr es:[di+1],ah inc siinc diinc dijmp short outputok:pop axpop cxpop dipop sipop dxretcode endsend start实验作业3的截图:。

汇编指令实验1

汇编指令实验1

汇编指令实验 1汇编指令实验11.1 实验目的1.了解ADS 1.2 集成开发环境及ARMulator 软件仿真;2.掌握ARM7TDMI 汇编指令的用法,并能编写简单的汇编程序;3. 掌握指令的条件执行和使用LDR/STR 指令完成存储器的访问。

1.2 实验设备硬件:PC 机一台软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境1.3 实验内容使用LDR 指令读取0x40003100 上的数据,将数据加1,若结果小于10 则使用STR 指令把结果写回原地址,若结果大于等于10,则把0 写回原地址。

使用ADS 1.2 软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0、R1 的值,打开存储器观察窗口(Memory) 监视0x40003100 上的值。

1.4 实验预习要求ADS集成开发环境1.5 实验步骤1. 启动ADS 1.2,使用ARM Executable Image 工程模板建立一个工程Instruction1。

2. 建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。

3. 设置工程连接地址RO Base 为0x40000000,RW Base 为0x40003000。

设置调试入口地址Image entry point 为0x40000000。

如图1,图2所示。

图1. 工程链接地址图2. 工程调试入口地址4. 编译连接工程,选择【Project】->【Debug】,启动AXD 进行软件仿真调试。

如图3所示。

图3. 启动AXD5. 打开寄存器窗口(Processor Registers),选择Current 项监视R0、R1 的值。

打开存储器观察窗口(Memory) 设置观察地址为0x40003100,显示方式Size 为32Bit,监视0x40003100 地址上的值。

图4 存储器显示窗口说明:在Memory 窗口中点击鼠标右键,Size 项中选择显示格式为8Bit、16Bit、32Bit。

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

实验一汇编指令实验一、实验目的1、初步掌握开发环境及ARM软件模拟器。

2、掌握简单的ARM、THUMB汇编指令的使用方法。

3、通过实验观察不同类型指令的工作原理。

二、实验步骤(一)、掌握ARM程序开发环境RealView MDK。

1、在“我的电脑”中新建一个目录,比如:“Exp01”。

(注意:目录尽量建立在自带的U盘上,以防实验工程被还原)2、打开Keil uVision软件,点击菜单中的“File->Project->New uVision Project”选项,启动新建工程向导程序,新建一个uVision工程。

工程文件保存在第1步创建的目录中,工程命名为:“Exp01”。

图1 新建工程向导启动图2 向导开始首先为新建工程命名为:Exp013、新建工程向导的第一步是:选择设备即处理器的选择(Select Device for Target ‘Target1’)。

在对话框的左下方有一个列表,列表中选择“NXP->LPC2138”。

注:LPC2138是实验箱采用的ARM芯片型号。

图3 向导第1步,设置处理器类型点击确定按钮后,向导程序会弹出一个“提示框”。

这个提示框是询问你是否要向工程中添加LPC2000系列处理器的启动代码。

这里可以点击“否”按钮。

注:启动文件在生成可下载的运行文件时是必须的,这里只是测试汇编程序所以不需要启动文件。

图4 添加启动代码4、工程建立完成后,uVision软件的主窗口左边就是工程空间浏览器窗口。

可以看到已经建立好的工程默认处理器名:“Target 1”,默认源文件组名:“Source Group 1”。

图5 新建工程后的主窗口右键列表中的“Target 1”,在弹出菜单中选择“Manage Components”选项。

可以打开“Components, Enviromentand Books”窗口。

这里可以对默认处理器和源文件组重新命名。

图6 “Components, Environment and Books”窗口5、在软件主窗口的工具条上点击“新建图标”,就会新建一个文本文件用于编辑源程序代码。

图7 新建文本文件6、新建的文本文件需要保存,点击菜单“File->Save AS”选项,弹出的对话框中为文件命名,并保存在工程目录中。

注意:文件的后缀名必须是“.s”,这是汇编源程序的文件类型。

图8 保存并命名文本文件7、新建并保存后的源程序文件还要导入到工程中。

右键点击列表的“Source Group ASM”选项,在弹出菜单中选择“Add Files to Group ‘Source Group ASM’”选项。

在弹出的文件浏览对话框中选择Asm01.s文件并点击“Add”按钮。

之后,程序文件被加入到源程序组中。

图9 添加程序文件8、源程序文件添加程序代码如下:;********************************************************************** ; NAME: Asm01.s*; Author: FeiXiang / TCU Computer and Information Project College*; Desc: ARM instruction examples*; History: 2015.9.15*;********************************************************************** ;/*------------------------------------------------------------------ */;/* constant define*/;/*---------------------------------------------- --------------*/x EQU 45 ; x=45y EQU 64 ; y=64/;/*---------- ----------------------------------------------*/;/* code */;/*-------------------------------------------------------- */AREA text,CODE,READONL Y ; code start */startmov r0, #x ; put x value into R0ldr sp, =0x40000000 ;put imme 0x40000000 value into SPstr r0, [sp] ; save the value of R0 into stacksmov r0, #y ; put y value into R0ldr r1, [sp] ; read the data from stack,and put it into R1add r0, r0, r1 ;R0=R0+R1str r0, [sp]stopb stop ; end the code ?cyclingend9、程序编辑完成后,在进行Build之前,我们需要对工程的选项进行设置。

通过鼠标右键点击工程列表中的“Target”可以打开“Options for Target ‘LPC2138’”窗口。

图10 工程选项设置10、在工程选项窗口,选择“Linker”选项卡,点击取消“Use Memory Layout from Target Dialog”前的对勾,同时删除“Scatter File”中的内容。

注意:因为没有下载程序,这里对内存地址空间没有明确的使用要求,所以才做出如下设置。

11、点击工具栏上的“Build”按钮进行编译。

编译后,可以点击“Debug”按钮启动调试对话界面,进行单步调试,并观测寄存器中的数值。

图11 编译和调试图12 Debug 对话界面(二)、对应汇编程序练习。

1、为了更好的理解汇编指令和程序技巧,本实验设计了几组代码。

同时,为了节省时间,后续实验可以不用建立新的工程,只需要将上面实验环节中建立的工程Exp01中的Asm01.s 文件做替换就可以了。

每个程序都要编译并仿真运行,观测寄存器和存储器空间的变化,理解汇编指令的作用。

1)间接寻址方式的验证。

下面的程序中,指令“ldr r2, [r11,#0x10]!”后加了“!”,表示通过“R11+0x10”间接取得地址后,还要将新的寄存器仿真机器指令区存储器仿真。

地址从0x40000000开始单步调试按钮地址值写回到R11寄存器。

;**********************************************************************; NAME: Asm02.s*; Author: FeiXiang / TCU Computer and Information Project College*; Desc: ARM instruction examples*; History: 2015.9.15*;**********************************************************************;/*------------------------------------------------------------------ */;/* constant define*/;/*---------------------------------------------- --------------*/x EQU 45 ; x=45y EQU 64 ; y=64/;/*---------- ----------------------------------------------*/;/* code */;/*-------------------------------------------------------- */AREA text,CODE,READONL Y ; code start */startmov r0, #x ; put x value into R0ldr sp, =0x40000010 ;put imme 0x40000010 value into SPldr r12,=0x40000000 ;put imme 0x40000000 value into R12ldr r11,=0x40000000 ;put imme 0x40000000 value into R11str r0, [r12,#0x10] ; save the value of R0 into NO.0x40000010 memory spaceldr r1, [sp] ; read the data from stack,and put it into R1ldr r2, [r11,#0x10]! ; load the value of the NO.0x40000010 memory space into R0 and write back the addressstopb stop ; end the code cyclingend2)运算类指令对CPSR的影响。

下面的程序中,指令“sub r2, r0, r1”对CPSR没有影响,指令“subs r2, r0, r1”会影响CPSR的Z标志位。

;**********************************************************************; NAME: Asm03.s*; Author: FeiXiang / TCU Computer and Information Project College*; Desc: ARM instruction examples*; History: 2015.9.17*;**********************************************************************;/*------------------------------------------------------------------ */;/* constant define*/;/*---------------------------------------------- --------------*/x EQU 45 ; x=45y EQU 45 ; y=45/;/*---------- ----------------------------------------------*/;/* code */;/*-------------------------------------------------------- */AREA text,CODE,READONL Y ; code start */startmov r0, #x ; put x value into R0mov r1, #y ; put y value into r1sub r2, r0, r1subs r2, r0, r1stopb stop ; end the code cyclingend3)堆栈操作指令。

相关文档
最新文档