汇编语言

PIC单片机汇编语言学习(一)

99封情书 提交于 2020-02-09 08:25:18
1、汇编语言的语句格式: 标号 操作码(指令助记符) 操作数 ;注释 (label) (opcode) (operand) (comment) 2、常用伪指令 a.EQU——符号名赋值伪指令 格式:符号名 EQU nn b.ORG——程序起始地址定义伪指令 格式:ORG nnnn c.END——程序结束伪指令 格式:END d.LIST——列表选项伪指令 格式:LIST [可选项,可选项,......] e.INCLUDE:调入外部程序文件伪指令 格式:INCLUDE "文件名" 2、分支程序结构 ——对于程序中的指令运用作几点说明: (1)凡是需要2个数参与的逻辑运算(与、或、异或)和算术运算(加、减),都需要事先将其中一个操作数放入W中。对于在此使用的减法指令更要格外关注,应预先把减数放人W中,或者说,预先放入W中的数,在运算中是当做减数,而寄存器中的数当做了被减数。 (2)一条条件跳转指令往往需要跟随一条无条件跳转指令,才能实现长距离的转移和程序的分支。 (3)PIC单片机的指令系统中没有设置专用的停机指令,可以用一条跳转到自身的无条件跳转指令GOTO来实现。 3、PIC单片机指令 由3种基本类型指令组成: a.字节操作类指令 b.位操作类指令 c.立即数和控制操作类指令 对于字节操作指令,f——>文件寄存器标识符,d——>目标寄存器标识符 说明

《汇编语言》第一节学习心得

耗尽温柔 提交于 2020-02-09 04:10:17
这学期初识《汇编语言》,只知道有这么一节课却不曾知道讲述的是什么。尽管是选修课,但由于学分需要也有自身的好奇使得自己坚持选择了这门课。仅学习完第一章后列出学习心得。 ①机器语言是机器指令的结合,机器指令即一台机器可以正确执行的命令。早起的程序设计均使用机器语言,运用0、1数字编程的程序代码进行指令,但操作内容极为冗长繁琐,1个有用的程序最少也要有几十行机器码,而一旦有一个数字输入错误,程序就会运行有所错误,而检查过程也会非常困难,极为的不方便。 ②在机器语言不方便的情况下,汇编语言由此诞生,主体是汇编指令。与机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。 ③汇编语言由3类指令组成:汇编指令:机器码的助记符,有对应的机器码;伪指令:没有对应的机器码,由编译器执行,计算机并不执行;其他符号:如+、-、*、/等,由编译器识别,没有对应机器码。汇编指令是汇编语言的核心。 ④CPU控制整个计算机的运作并进行运算。想让CPU工作,就必须提供指令和数据。指令和数据在存储器中存放,即内存。学习领用汇编语言编程,首先要了解CPU是如何从内存中读取信息,以及向内存中写入信息的。 ⑤指令和数据都是二进制信息。 ⑥存储器被划分成若干个存储单位,每个存储单元从0开始顺序编号,微型机存储单元可以存储一个Byte,即8个二进制位。大容量存储器还用以下单位来计算容量: 1KB

汇编语言(王爽)9章jmp指令

六眼飞鱼酱① 提交于 2020-02-09 01:26:42
jmp short 标号 jmp near ptr 标号 jmp far ptr 标号 jmp 16位reg,如jmp ax jmp word ptr 内存单元地址 jmp dword ptr 内存单元地址 详情百度https://www.jianshu.com/p/c685c1c033ff 若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据? 若要指向第一条指令,则要使IP的值为0000H即可,而jmp word ptr为段内转移指令,相当于把IP值赋值为后面内存单元的值,故只需要[0001]处的字是0即可。 即[0001]和[0002]处的字节都是0。 使用t单步执行,可以发现程序进入死循环。 assume cs : code data segment ? //db 'x',0,0,'x' data ends code segment s : mov ax , data mov ds , ax mov bx , 0 jmp word ptr [ bx + 1 ] mov ax , 4 c00h int 21 h code ends end s (2)补全程序,使得jmp指令执行后,CS:IP指向第一条指令 由于执行jmp指令后指向第一条指令,CS段没有改变,只需要改变IP值为0000H

计算机要素--第二章 布尔运算

▼魔方 西西 提交于 2020-02-08 19:14:26
计算机系统要素,从零开始构建现代计算机(nand2tetris) 如果完成了本书所有的项目 你将会获得以下成就 构建出一台计算机(在模拟器上运行) 实现一门语言和相应的语言标准库 实现一个简单的编译器 而且,这本书的门槛非常低,只要你能熟练运用一门编程语言即可。本课程综合了数字电路,计算机组成原理,计算机体系架构,操作系统,编译原理,数据结构等的主要内容,搭建了计算机平台的构建的框架,并未深入细节,如果需要了解细节,可由本书作为主线,逐步完善的知识体系。 项目地址Github 本章重点内容 布尔运算 详细内容 在刚学C语言的时候,我一直很好奇,人类是怎样想出编程语言的?既然人类想出了编程语言,那么为什么编程语言会是现在的这个样子,比如指令为什么要那样设计?即便是人类能够将自然语言用0,1机器码来表示,机器语言的存在和人类将自然语言翻译成0,1机器码是一种巧合,还是具有一定的关系呢?这种机器语言是像牛顿定律一样先天存在呢,还是人类根据某些规则设计的呢?学完这一章,打开了我的疑惑。 我想这个过程应该是这样的:“对于机器而言,0,1机器码只不过是人类给的名字,机器码的本体是高低电压,在机器上加上电压可以使机器工作。这应该就是编程最初的模样,也就是给机器加电压使之工作。慢慢的人类设计出一种称为ALU的东西,利用一定的逻辑可以进行运算,这种逻辑就是布尔逻辑。当然,ALU需要输入很多电压

计算机语言的发展过程概述

你离开我真会死。 提交于 2020-02-08 15:44:38
作为一个00后,在一年多的学习时间里观摩CSDN各界大佬的文章后,还是按耐不住想写文章的心情。今天就对计算机语言发展的过程做一个简要概述。才疏学浅,望各位指正。 计算机语言大体分为三个阶段:机器语言,汇编语言,高级语言。 第一代计算机语言称为机器语言 。实际上这种语言只能用0/1来表示,人们用0/1来控制计算机,直观上来看,机器语言就显得十分晦涩难懂了。机器语言是计算机能够直接识别的,这就意味着每一台计算机只拥有属于自己的机器语言。可想而知机器语言的移植性是很差的。 只用0/1来表达语言会特别复杂,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令。计算机语言的发展也就到了第二个阶段。 第二代计算机语言称为汇编语言 。比如说:Add 1 2,Add就是一个英文单词,用一个英文单词来代替加法的操作指令,从而实现1加2的过程。 其实计算机并不认识Add这个单词,工程师是通过软件将Add这个指令转化成为0/1的代码,这个翻译的过程是通过编译器来完成的。由此看来汇编语言确实比机器语言方便了很多。 在机器语言和汇编语言的更新之后,人们发现了限制程序推广的关键因素———移植性。这时候高级语言横空出世,逐渐替代了机器语言和汇编语言。 第三代计算机语言称为高级语言 。再刚接触C/C+

JAVA学习之路------Day01

对着背影说爱祢 提交于 2020-02-05 15:46:48
计算机知识科普篇 #什么是计算机? 计算机是存储和处理数据的电子设备。 计算机包括两部分第一是硬件,第二是软件。硬件包括计算机中看得见的物理部分,软件提供看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务。 #硬件组件 ![计算机由中央处理器、内存、存储设备、输入设备、输出设备和通信设备组成]](https://img-blog.csdnimg.cn/20200205092120753.png) #中央处理器 中央处理器(Central Processing Unit,CPU)是计算机的大脑。他从内存中获取指令然后执行这些指令。CPU通常由两个部分组成:控制单元和算数/逻辑单元。控制单元用于控制和协调其他组件的动作。算数/逻辑单元用于数值和逻辑运算。GPU:GPU是用于计算图像的硬件工具。 #内存 内存(随机访问存储器,Random-Access Memory,RAM)由一个有序的字节序列组成,用于存储程序及程序需要的数据。可以将内存看为计算机执行程序的工作区域。一个程序和他的数据在被CPU执行前必须移动到计算机的内存中。 内存中字节的内容永远非空,但是原始内容可能对程序毫无意义。一旦新的信息被放入内存,该字节当前的内容就会丢失。 内存是一种易失的数据保存形式:断电时存储在内存中的信息就会丢失。所以程序和数据以二进制的形式被永久存放在存储设备(硬盘)上

论机器语言、汇编语言、高级语言之异同点

怎甘沉沦 提交于 2020-02-05 13:29:59
计算机执行任务需要取指令,而指令都是事先制定好的放在存储器中的二进制序列,这些二进制序列就是机器语言,由0和1组成。完成一个基本操作的二进制序列叫做一条机器指令,例如加法,减法指令。随着处理器技术的发展,机器指令越来越复杂,用机器语言编程越来越难,人的工作效率低下。 人们便尝试用英文助记符代替晦涩的机器指令,例如ADD代表一条机器加法指令,助记符和机器指令一一对应,就这样汇编语言出现了,它极大的提高了人的工作效率。但是计算机并不认识汇编指令,必须将它替换为对应的机器指令,计算机才能执行它,这个过程叫汇编!在早期,通过人工查表把汇编指令替换为机器指令,后来出现了汇编程序,可以自动把汇编指令翻译成机器指令。通常我们所说的指令集就是汇编指令或者机器指令的集合,指令集相同意味着操作硬件的方式相同,即软件兼容。 人的追求永无止境,后来出现了各种高级语言,它接近人类自然语言的表达方式,便于人理解和使用。其中C语言脱颖而出,它不可撼动的成为了系统编程语言,众多操作系统例如unix,linux,ios,andriod等底层全部由C语言实现。C语言虽然是一种高级语言,但是它的硬件亲和性决定了适合于底层,驱动,操作系统等领域,在嵌入式领域,首选的也是C语言。计算机无法执行高级语言程序,需要通过编译程序把它翻译成汇编代码,然后通过汇编程序翻译成二进制序列(机器语言),计算机才能执行它! 来源: CSDN

汇编语言---内存变量的地址

大兔子大兔子 提交于 2020-02-04 20:02:08
计算机中的内存是以字节为单位的连续的存储空间,每个字节都有一个唯一的编号,这个编号就称为内存地址; 因为内存的存储空间是连续的,所以,内存字节的地址编号也是连续的,并用二进制或十六进制数来表示; 在内存中,每个变量都有自己的存储单元,不同类型的变量占用的存储单元空间大小不一样; 对于多字节变量来说,在内存中是按照"高高低低"的规则存放的, 即:高字节存放在高地址内存单元中,低字节存放在低地址内存单元中; 而变量的地址就是其所占用存储单元的最低字节的内存地址,即:该变量所占用存储单元的第一个字节的地址; 计算机处理内存中的变量(内存单元)时,都是从最低地址向高地址方向处理的; 对变量进行处理,也就意味着对内存单元进行处理; 来源: https://www.cnblogs.com/taek/archive/2012/02/05/2338906.html

河北工业大学汇编语言程序设计实验二

陌路散爱 提交于 2020-02-03 05:10:16
河北工业大学汇编语言程序设计实验二 2-4 ASSUME CS:CODE,DS:DATA DATA SEGMENT STAR DB '* $' ;定义输出时需要用到的*,换行 N DB 13,10,'$' I DW 0 J DW 0 ;定义用于控制行列输出的变量I,J DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX MOV AH,01H ;输入需要打印的三角形的行数 INT 21H SUB AX,130H MOV I,AX MOV J,AX MOV DX,OFFSET N ;打印三角形开始前先输出一个换行符 MOV AH,09H INT 21H MOV CX,I L1: ;第一层循环 MOV I,CX MOV CX,J L2: MOV DX,OFFSET STAR ;在内层循环里打印*号 MOV AH,09H INT 21H LOOP L2 MOV BX,J ;调整打印*号的数目 SUB BX,1 MOV J,BX MOV CX,I ;还原外层循环CX MOV DX,OFFSET N ;打印换行符 MOV AH,09H INT 21H LOOP L1 MOV AX,4C00H INT 21H CODE ENDS END START 2-5 ASSUME CS : CODE , DS : DATA DATA SEGMENT

河北工业大学汇编语言程序设计实验四

对着背影说爱祢 提交于 2020-02-03 03:29:14
河北工业大学汇编语言程序设计实验四 4-1 ASSUME DS : DATA , CS : CODE , SS : STACK DATA SEGMENT STR1 DB 'Please Input The Frist String:' , 0 AH , '$' STR2 DB 0 AH , 'Please Input The Second String:' , 0 AH , '$' STRING1 DB 101 , ? , 101 DUP ( ? ) STRING2 DB 101 , ? , 101 DUP ( ? ) MATCH DB 0 AH , 'STRING1 == SRRING2$' NOMATCH DB 0 AH , 'STRING1 != STRING2$' DATA ENDS STACK SEGMENT STACK DW 20 H DUP ( ? ) TOP LABEL WORD STACK ENDS CODE SEGMENT P PROC FAR MOV AX , DATA MOV DS , AX MOV AX , STACK MOV SS , AX LEA SP , TOP LEA DX , STR1 ; 输出提示,输入第一个字符串 MOV AH , 09 H INT 21 H LEA DX , STRING1 MOV AH , 0 AH INT 21 H