资源描述:
《汇编语言程序设计大全》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、***第一章基础知识***本章讲述的是汇编的一些基础知识,例如寄存器,堆栈,进制等,如果你以前学过汇编,那么你只要看寄存器,寻址方式就可以了.对于初学者,可能看了之后,有些不懂,但是不要紧.你可以继续看下一章,然后再回来看这章,以前不懂的可能就豁然开朗了.希望大家能坚持学下去,不要因为遇到一些困难就退缩了,当然"兴趣是最好的老师",如果你对6502汇编不感兴趣,那么就不要勉强自己,因为每个人都有自己的专长.衷心的祝福大家!**进制的概念***16进制,2进制*1.16进制六进制数的每一位有16个不同的数码,分别为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
2、别表示10进制中的0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,152.2进制在2进制中,每一位仅有0和1两个可能的数码,所以基数为2.低位和相邻高位的关系是"逢2进1",所以称为2进制.3.2进制转化为10进制例如把1101转为10进制=1*2*2*2+1*2*2+0*2+1=8+4+1=13可见,转化很简单,只是基数是24.10进制转化为2进制例如将173转化为2进制173/2=86余数=186/2=43余数=043/2=21余数=121/2=10余数=110/2=5余数=05/2=2余数=12/2=1余数=01/2=0余数=1所以结果为10110
3、1015.16进制转化为10进制例如A2转化为10进制=10*16+2=162BD转化为10进制=11*16+13=1896.10进制转化为16进制例如162转化为16进制62/16=10,余数=2所以结果为A2说明,文曲星上的科学计算支持数值之间的转换,大家可以很方便的使用例如要把十进制188转化为2进制,那么我们先进入科学计算输入188,按按=号,然后按中英数,然后按7,就转化为2进制了2进制中英数+716进制中英数+98进制中英数+810进制中英数+0切换到16进制后,是如何输入A,B,C,D,E,F呢?A中英数+1B中英数+2C中英数+3D中英数+4E中英数+5F中英
4、数+6**认识寄存器**6502寄存器1.累加寄存器A这是个8位寄存器,既然是8位,那么说明该寄存器中只能存储一个(00-FF)之间的立即数.它与算术逻辑运算单元一起完成各种算术逻辑运算,它既可存放操作前的初始数据,也可存放操作结果,所以称为累加器.在6502汇编中,这个寄存器应该算是用的最多的大家也不要管那么多,只要知道有这个寄存器,该寄存器可以存放一个00-FF之间的立即数就可以了.2.变址寄存器X也是8位寄存器,它在编程中常被当作一个计数器来使用.它可以由指令控制而被置成一个常数,并能方便的用加1,减1,比较操作来修改和测试其内容,以使得程序能够方便灵活的处理数据块,表
5、格等问题.3.变址寄存器Y用法和变址寄存器X一样,只不过在有些情况下,比如程序中要同时处理两个以上的数据块时,一个变址寄存器显得不够,所以6502中有两个用于变址的寄存器X和Y.4.程序计数器PC它是6502中唯一的16位寄存器,PC是用来存放指令地址码的寄存器,由于程序的执行一般为顺序执行方式,每取出一个指令字节后PC即自动加1,为取下一个指令字节做好准备,所以程序计数器PC中的内容往往是指向下一个指令字节地址,但在执行转移指令时,PC中将被放进要转移的目标地址.5.堆栈指针S它是用来指示堆栈栈顶位置的寄存器,由于6502规定堆栈设在第1页存储器中,所以堆栈指针S也是8位寄
6、存器只用来指出堆栈位置的低8位地址.S具有数据进栈时自动减1,出栈时自动加1的功能.6.标志寄存器P这也是8位的寄存器,但是只用了其中的7位,第5位空着不用.每条指令在执行之后往往会发生进位溢出,结果为0,或是结果为负数(大于7F的数叫负数)的情况.指令执行完后常常要保留这些情况作为条件分支的依据,标志寄存器P就是为了适应这需要而设计的,在寄存器P中有以下7个标志位,不过我这里只介绍其中的5位76543210NVBDIZCC--进位标志.指令执行完毕后的最高进位状态,若最高位有进位则使C=1,若最高位无进位则使C=0N--零标志.指令执行完毕后结果为0,那么Z=1;否则Z=0
7、.I--中断标志.此位置0表示允许中断,置1表示禁止中断,但非屏蔽中断不受次约束V--溢出标志.指令执行后若产生溢出,则次标志位被置1N--负数标志.指令执行完毕后,若结果最高位为1,则该位置1下面我们举例来说明:例:两个正数61,4A相加01100001+01001010----------=10101011两个正数相加,为什么结果变为负数呢?这是也61+4A=AB,超过了八位寄存器所能表示的最大正数7F,而产生了溢出,那么这时V=1,结果不是0,那么Z=0,结果最高位为1,那么N=1,结果最高位没有