《汇编语言程序设计》学习笔记系列(一)
汇编语言学习笔记

汇编语言学习笔记---傻瓜学汇编前言当我在学汇编的时候发现一到了实际编程就发现学过的那些指令串不起来,什么浮点数啊整数啊,怎么跳转啊,怎么循环啊,脑袋立马变成浆糊。
下面的文档是我的学习经历,希望对初学者在学习加密解密,软件调试,单片机编程有点帮助。
目录1.编程环境的搭建2.深入理解汇编语言的数据3.顺序程序设计4.分支结构程序设计5.循环6.数组及指针7.函数8.结构9.综合运用10.参考文献一:编程环境的搭建首先装好masm32v10 和windbg,和editplus,然后在editplus中输入下面的程序,具体的请参考罗云彬的那本书,里面有详尽的说明,编译运行看看:.386.model flat,stdcalloption casemap:noneincludelibmsvcrt.libprintf proto C :V ARARG.datamsg db "hello,this is the first test program!", 0dh ,0ah,0.codestart:call mainretmain procpush offset msgcall printfadd esp,4push offset msgcall printfadd esp,4retmainendpend start下面是运行结果:这里输出两行消息主要是我在写这个最简单的程序的时候发现他不换行,于是我在数据定义后面我加了“0ah,0dh”,呵呵,就是回车换行的十六进制表示,你也可以用其他方法试试,程序就不多解释了,后面会有更多的解释,不过你一定要走到这以步,才能进行下一章。
2.深入理解汇编语言的数据整数常量及变量,先看一段很简单的汇编程序:.386.model flat,stdcalloption casemap:noneincludelibmsvcrt.libprintf proto C :V ARARG.dataPRICE EQU 30msg1 db "total=%d",0dh,0ah,0.codestart:call mainretmain proclocal num:dwordlocal total:dwordmov num,10mov eax,numimul eax,eax,PRICEmov total,eaxpush offset msg1call printfadd esp,4retmain endpend start程序的意思很简单就是在屏幕上打印出某个东西的价格,如过要你拿笔和纸算,拿你肯定很快就能算出来,但你让电脑怎么算呢?当电脑执行到第一个语句的时候,也就是num=10,它就把10放到某个地方并且记住这个值,寄存器或者内存,呵呵,它也就这两个地方,为什么要这么做呢?因为后面要用它来计算啊,为了算出这个值,电脑好的办法就是放在它的内存里,为什么不是寄存器?因为寄存器太少了,就那么几个,呵呵,所以了它就把10存在一个叫num的内存里,注意了哦,num是程序里的变量名,是存中里的一个位置的名称,它的值是10,你可能会问,不起名不行么?行,等下在调试器中你看到的就是没名的。
《汇编语言程序设计》学习总结与心得

《汇编语言程序设计》学习总结与心得其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟现在高级语言这么发达,而且运用起来灵活易懂,像汇编这种低级语言又难又不易学。
或许老师是知道我们之前有这种想法,所以第一节课就跟我们讲解了一下了汇编语言在当今这种高速发展的社会的作用和地位,让我们能够正确的认识汇编语言的精华,正确对待这么课。
而且还在课堂了百度了汇编语言的招聘信息,或许这才是使我们正确对待汇编的最直接的原因,关系到我们以后的出路,或许我们学好了一门汇编,以后出去找工作的机会不就更广了吗?正是在这种动力的驱使下我才对汇编语言有了一个新的认识,而且决定要把它学好。
在后来的学习中我发现其实汇编不是很难学,其实学汇编就像学其他的高级语言一样,高级语言要求对语言非常了解。
在学汇编的过程中,我们最重要的就是要掌握汇编语言中的指令的一些基本用法。
当然要能够真正的了解其中的内涵,这样我们在实际的编程中也能够像运用高级语言一样灵活的变通。
汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与我们计算机内部的结构联系应该联系很密切,而且在我们学习中也深刻的了解到了这一点。
比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。
前面几章都是对计算机内部结构和一些常用的指令以及寻址方式的寻址方式。
到后面学到子程序以及宏的作用才真正发现到其实跟高级语言差别不大。
以C语言为例,C语言不也是由一个一个的函数组成的吗?没想到想汇编这样的低级语言也可以这样。
在汇编语言的子程序和宏中,我个人更感觉宏的运用更像我们高级语言的子函数,通过定义好的宏,我们在后面直接调用就可以了。
尤其是宏带参数的宏跟C语言中带参数的函数真的很像,根据参数的不同调用宏就能得到不同的结果。
汇编语言学习笔记

汇编语言学习笔记1进行学习8086系列汇编语言,针对《王爽汇编语言》学习心得体会。
汇编语言是基于硬件的编程,首先要有一台PC机。
当然纯粹的X86计算机已经不存在,但是有一台兼容INTEL CPU 的计算机完全满足学习需求。
汇编语言适合具体的微处理器相联系的,由于不同的CPU 有不同的架构,所以不同的CPU 具有不同的汇编语言。
本人学的是x86汇编语言当然针对的也是intel cpu。
《王爽汇编语言》知名汇编语言编程平台是硬件系统而不是操作系统。
从而汇编语言能够充分的让程序员体验到底层编程的乐趣。
当然对于初学者具有一定的高级语言编程基础,二进制,十六进制等基础知识更好。
第一章基础知识1.1 机器语言最初控制计算机运算的是机器语言,机器语言是早于汇编语言的一种最底层的语言,就算汇编语言也是利用汇编语言编译器将汇编语言编译成机器语言,计算机才能执行。
因为计算机只能执行机器语言。
但是由于汇编语言与机器语言一一对应,所以汇编语言具有很高的执行效率。
这是其他高级语言无法比的。
但是由于机器语言全部是二进制数,给编程带来了极大地不便。
导致了整个计算机行业的发展缓慢,就这样会变啊语言诞生了。
1.2 汇编语言汇编语言的主题是汇编指令——汇编指令就是机器指令的便于记忆的书写格式。
例如机器指令:100010011111000 汇编指令: MOV AX,BX当然如前边所说,计算机能读懂的只有机器指令,汇编语言还是要被翻译成机器指令。
汇编语言的组成--1 汇编指令:机器码的对应助记符。
2 伪指令:由编译器识别执行,没有对应的机器码 3:其他符号例如(+,-*/...)1.3 存储器存储器是计算机的核心部件,cpu执行的指令和数据都存放在存储器中。
如果cpu是大脑那么存储器就是大脑的记忆。
没有了记忆的大脑是不能进行工作的。
1.4 指令和数据在计算机中指令和数据都是一样的--二进制代码1.5 存储单元存储器都被换分成若干个存储单元,编号从0开始(值得注意)计算机的最小存储单元就是bit(比特)就是一个二进制位,8个二进制位组成一个字节(byte)当然计算机能够识别的最小单位就是字节。
汇编语言学习笔记

汇编语言学习笔记《汇编语言》--王爽前言学习汇编目的:充分获得底层编程体验;深刻理解机器运行程序的机理。
原则:没有通过监测点不要向下学习;没有完成当前实验不要向下学习。
第一章基础知识有三类指令组成汇编语言:汇编指令;伪指令;其他符号。
8bit = 1byte = 一个存储单元有n根地址线,则可以寻址2的n次方个内存单元。
1.1节--1.10节小结(1)汇编指令是机器指令的助记符,同机器指令一一对应。
(2)每一种cpu都有自己的汇编指令集。
(3)cpu可以直接使用的信息在存储器中存放。
(4)在存储器中指令和数据没有任何区别,都是二进制信息。
(5)存储单元从零开始顺序编号。
(6)一个存储单元可以存储8个bit,即八位二进制数。
(7)每一个cpu芯片都有许多管脚,这些管脚和总线相连。
也可以说,这些管脚引出总线。
一个cpu可以引出的三种总线的宽度标志了这个cpu不同方面的性能。
地址总线的宽度决定了cpu的寻址能力;数据总线的宽度决定了cpu与其他器件进行数据传送时的一次数据传送量;控制总线的宽度决定了cpu对系统中其他器件的控制能力。
监测点:1KB的存储器有1024个存储单元?存储单元的编号从0到1023.内存地址空间:最终运行程序的是cpu,我们用汇编编程时,必须要从cpu的角度思考问题。
对cpu来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受cpu寻址能力的限制。
这个逻辑存储器即是我们所说的内存地址空间。
第二章寄存器(cpu的工作原理)mov ax, 2add ax, axadd ax, axadd ax, ax(1)cpu中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;(2)段地址和偏移地址通过内部总线送人一个称为地址加法器的部件;(3)地址加法器将两个16位地址合成为一个20位的物理地址;(4)地址加法器通过内部总线将20位物理地址送人输入输出控制电路;(5)输入输出控制电路将20位物理地址送上地址总线;(6)20位物理地址被地址总线传送到存储器;段地址*16+偏移地址= 物理地址的本质含义内存并没有分段,段的划分来自cpu。
汇编学习笔记-1

汇编学习笔记-11.基础1.1汇编语⾔机器语⾔:是“机器指令”的集合,机器指令是⼀串⼆进制数字,可以由计算机转换为⼀列⾼低电平并执⾏每⼀种cpu,都有⾃⼰的指令集。
也就是不同cpu因为设计不同,指令集也是不同的但由⼆进制数组成的机器语⾔显然不易于阅读,记忆,所以也就有了汇编语⾔汇编语⾔实际上是机器语⾔的助记符,编些完后通过编译器,将汇编代码替换成机器能执⾏的⼆进制串汇编代码由这三部分组成:1. 汇编指令:机器码助记符,也就是它有对应的机器码2. 伪指令:没有对应机器码,由编译器执⾏(在编译过程中)3. 其他符号:⽐如 +,−,∗,/,由编译器识别当然,汇编的主要部分是汇编指令,后两种都是写给编译器看的(其实算是⼀类,主要是有符号和指令的区别)1.2存储器和其它有关存储、数据等存储器⽤来存储数据、指令它被划分为⼀些存储单元(编号从 0 开始),⼀个单元存储⼀个 Byte,也就是⼋个⼆进制位主要的存储器是内存,不同与磁盘,cpu只能从内存⾥读取数据、指令,不能从磁盘读取。
因此,任何磁盘中的指令或数据,想要被cpu使⽤,都必须先加载到内存⼀般如果要画图表⽰某⼀段内存中的数据的时候,习惯将低地址放在上,⾼地址在下,也就是从 0 开始从上往下来写这也意味着,从这种图⾥读⼀个⼆进制数的时候,要从下向上读上⾯提到了数据和指令,其实指令就是以前说的机器码,和数据⼀样,在存储器上看,都是⼆进制串,没有什么不同只是cpu在处理时,将他们区分开,分别作为指令来执⾏,作为数据来处理cpu对存储器的读写以及三种总线上⾯说存储单元有⼀个“编号”,这个编号就被称为某⼀段数据的地址如果cpu想在某段存储单元读或写,就要先给出它的地址,有了地址以后,还要知道操作是读还是写,以及读出的或要写⼊的数据是什么所以,cpu会和对应的芯⽚进⾏三种信息的交互:地址,读或写的数据,以及读或写的命令(称为控制信息)那么就要⽤到下⾯说到的三种总线了地址总线⽤来指定读写的存储单元cpu把地址发送给内存进⾏寻址(内存收到以后会⾃动定位过去),如下图,每⼀根地址总线能发送⼀个⼆进制位(零或⼀)当然,cpu在发送地址之前,要在内部先⾏成这个地址。
汇编语言学习笔记

汇编语言学习笔记一AX累加寄存器accum ulat orBX基地址寄存器bas eCX计数器countDX数据寄存器dataAH、AL、B H、BL、CH、CL、DH、DL(8位数据寄存器。
一个十六位的数据寄存器可以分为两个8位数据寄存器。
有高位、低位之分。
)SI源地址寄存器s ource i ndexDI目换变址寄存器Desti nation indexBP基址指针寄存器base point erSP堆栈指针寄存器stack point erCS代码段code segmentDS数据段data segm entSS堆栈段stack segmentES附加段extr a s egm entIP指令指针i nstruction poi nterFLAG 标志寄存器运算结果标志CF进位标志c arry fl agZF零标志z ero fl agSF符号标志si gn fl agOF溢出标志over flow flagPF奇偶标志parity fl agAF辅助进位标志auxiliar y carry fl ags状态控制标志DF状态控制标志di rection flagIF中断允许标志i nter upt-enable fl agTF追踪标志trap flag以字节为单位线性组织寄存器,存储单位地址采用16位。
一个字存放在存储器要占用连续的两个字节单元。
关于字的存放顺序是低位在前,高位在后关于字的读取顺序是高位在前,低位在后(存放与读取的顺序是相反滴)8086/8088有20根地址总线,它的物理地址长20位。
范围是00000h--fffffh。
物理地址是20位的,逻辑地址是16位的。
中间存在偏移(20:16=5:4,向左偏移了1位,这里的1位,对16进制数来说,就是在其后面加1个O,而对于二进制数来说就是在后面添加4个0)。
弄明白20位数,16位数与16进制数的区别物理地址、逻辑地址、段地址、偏移地址、段值段的起始地址是16的倍数,所以其可以表示为bbb bbbb bbbb bbbb 0000 ,用16进制可表示为xxx x0。
《汇编语言》第一章总结

《汇编语⾔》第⼀章总结汇编语⾔(⾯向机器的程序设计语⾔)第⼀章初识汇编———基础知识的掌握这学期我们修读了汇编语⾔这门课,学习之前我很疑惑为什么学校要让我们先接触C和C++这类⾼级语⾔再让我们学习汇编这门低级语⾔课,于是带着许多的疑问,我⾛上了汇编的道路。
汇编课程使⽤的教材是王爽的汇编语⾔,这本书采⽤以8086CPU为中央处理器的PC机来进⾏学习,下⾯我们步⼊正题!翻开书的第⼀章是对基础知识的介绍,在章节的开头,我了解到,汇编语⾔是直接在硬件上⼯作的低级汇编语⾔,要想有效地应⽤汇编语⾔对硬件系统编程,就必须要了解硬件系统的结构。
所以在第⼀章我们会学习硬件系统结构,为⽇后的课程打好基础。
计算机编程语⾔的演进1.1机器语⾔机器语⾔是机器指令的集合。
机器指令是0和1构成的⼆进制信息。
机器语⾔直接⾯向机器,与机器的硬件操作⼀⼀对应。
其优点是计算机可以直接识别、执⾏,使⽤机器语⾔可以充分发挥计算机的硬件功能;⽽它的缺点是因为每⼀种微处理器有⾃⼰的硬件设计和内部结构,需要不同的电平脉冲来控制,所以每⼀种微处理器都有⾃⼰的机器指令集,所以依赖机器硬件。
难以记忆,直接使⽤机器语⾔编制程序极易出错,并且难以调试。
电平脉冲在上⾯的实例中,汇编语⾔和C语⾔⼗分简短易懂的代码却要⽤那么冗杂的机器码去表⽰,可见机器码的晦涩难懂和不易查错和调试。
1.2汇编语⾔由于机器指令的难以辨别和记忆,机器指令的助记符———汇编语⾔诞⽣了。
汇编语⾔的主体是由汇编指令组成的,汇编指令和机器指令的差别在于指令的表⽰⽅法上。
不同的CPU有不同的汇编指令。
汇编语⾔由以下3类组成:1、汇编指令(机器码的助记符)2、伪指令(由编译器执⾏)3、其它符号(由编译器识别)。
汇编语⾔的核⼼是汇编指令,它决定了汇编语⾔的特性。
3. 计算机硬件系统的基本结构冯诺依曼体系结构计算机系统的组成1.3存储器和存储单元CPU 是计算机的核⼼部件.它控制整个计算机的运作并进⾏运算,要想让⼀个CPU ⼯作,就必须向它提供指令和数据。
汇编语言程序设计知识点

汇编语言程序设计知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;1、假设机器字长为8位,[+3]补 =00000011B,[-3]补= FD H 。
2、十六进制数0F8H表示的十进制正数为 248 ,表示的十进制负数为 -8。
3、8位二进制数被看成是带符号补码整数时,其最小值是 -128,最大值是 127 。
4、计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。
目前,微机中普遍采用的是ASCII 码,称为美国信息交换标准码。
第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器1、IP寄存器中保存的是?下一条指令的首地址2、FLAGS标志寄存器中共有几位条件状态位?6位3、有几位控制状态位?3位4、标志寄存器分为哪2类?条件码,控制5、哪个标志位用来控制可屏蔽中断请求是否被CPU响应?IF6、键盘I/O、显示I/O和打印I/O分别对应16、10和17号中断。
(2)存储单元的地址和内容,存储器地址的分段,实模式下逻辑地址、物理地址的表示。
1、如果SS=6000H,说明堆栈段起始物理地址是60000H。
2、已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为1420H 。
3、如果数据段中一个内存单元对应的物理地址为3F756H,(DS)=3F00H,那么使用DS段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元756H。
4.如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式(1)与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址).数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言程序设计学习笔记(一)
主题:第一章基础知识(第1-4节)
内容:
第一章概述
本篇我们将学习计算机所使用的机器语言方面的知识,这部分内容虽然比较简易,但是也是学好汇编语言程序的必备知识。
第一节进位记数制与不同基数的数之间的转换
1、基本概念
1)基数:所谓基数,就是表数的数码个数,我们熟悉的十进制数是以10为基数的。
二进制数是基数为2的记数制,以1和0表示不同状态。
二进制数是真正的机器数,能为计算机读懂真正的语言。
2)权:基数的N次方就是相应数码的N阶权,如314=10
⨯0,相应的10的N次幂就是314的N阶权。
二⨯+410
3⨯2+110
进制数用2N表示N阶权。
3)B、D、H:习惯上二进制数后跟一个字母B,十进制数后跟D,十六进制后跟字母H,用于人们区别不同进制的数。
2、二进制数与十进制数之间的转换
1)十进制数转换为二进制数的方法:降幂法和除法,其中降幂法需要熟悉以下几个数字,27=128,28=256,210=1024,等等;除法最常用,除法本质是基数按权展开公式的逆运用,需要注意的是:除法得到的第一个余数代表二进制的最低位数码,不要弄反,另外对于小数
转换的除法实际上乘2求整的过程,第一个整数是小数点后第一位数码。
2)二进制数转化为十进制数的方法:利用基数按权展开公式可以转换。
3、十六进制数及其与二进制、十进制数的转换
1)十六进制数的引进:二进制数的识记对于人们是很不方便的,因此需要一种和二进制数转换容易并且方便人们识记的进制数,这样十六进制数和八进制数就引入了。
2)十六进制H和二进制B之间的转换方法:十六进制数的数码以4位二进制数表示,并且由于基数是16=24,可以方便的实现两种数制转换。
H→B,每位十六进制数转换为4位二进制数,并替换掉原来十六进制进制数即可,如35BFH转换成二进制数为0011010110111111B。
B→H,每4位二进制数转换为1位十六进制数,并替换掉原来二进制数即可,如二进制数1010000110011100B转换成十六进制数为A19CH。
3)十六进制数和十进制数之间的转换方法:和二进制数和十进制数间的转换方法一致,只是把基数从2换到16.
第二节二进制数和十六进制数的运算
1、二进制数运算:
1)加法规则:0+0=0;0+1=1;1+0=1;1+1=0(进位1)
2)乘法规则:0⨯0=0;0 ⨯1=0;1 ⨯0=0;1 ⨯1=1
2、十六进制数的运算:
十六进制的运算可以采用先把该十六进制数转换为十进制数,经过计算后再把结果转换为十六进制的方法,但是这样做比较繁琐。
其实只要按照逢十六进一的规则,直接用十六进制数来计算也是很方便的。
1)十六进制加法:当两个一位数之和S小于16时,与十进制数同样处理,如果两个一位数之和大于或等于16时,则应该用S-16及进位1来取代S。
例:05C3H+3D25H=42E8H
2)十六进制的减法:也与十进制数类似,够减时可直接相减,不够减时服从向高位借1为16的规则。
例:3D25H-05C3H=3762H
3)十六进制的乘法:可用十进制数的乘法规则来计算,但结果必须用十六进制数来表示。
第三节计算机中数和字符的表示
1、原码、反码和补码:
1)二进制数的原码:就是二进制数本身,反码是原码按位取反的结果
2)补码的概念的引入:计算机为什么要使用补码记数?我们知道几何上角A的补角就是(180-A),比如角A=150,那么它的补角就是30,我们记数不仅可通过通过A=150知道,而且也可以通过
(180-30)知道,而且后面的表示往往是更为方便的。
计算机中数码都不是用原码来表示的,而是用它的补码表示
3)求补码的方法:数X的补码=2N-[X]原码,其中2N就相当于上例中的三角和180,N是机器字长。
或者还可以求得X的反码再加一的方法实现。
4)求原码值:假如从计算机中得到一个二进制数,那么它一定是补码形式,可以用3)中的方法的逆过程求的这个数的原码值,即:2N-[x]补码=X的原码
或{[x]补码-1}反码=X的原码
5)正数的补码=它的原码=它的反码,负数的补码使用上述方法求得
6)符号扩展问题,计算机中常会用到符号扩展问题,比如机器字长从8位到16位,16位到32位,那么计算机符号扩展的原则是:正数高位补0
负数高位补1
7)补码表数的范围:N位补码范围是:
-2N-1~2N-1-1
对于8位补码情况,最高位0,低7位表数,最大值为:0111 1111,即27-1=127,最小数为-128,为1000 0000。
2、补码的加减法运算法则
1)两个公式:
[X]补码−
−→
−求补运算[X]补码(1)
−
−求补运算[-X]补码−
−
−→
[X+Y]补码=[X]补码+[Y]补码(2)
[X-Y]补码=[X]补码+[-Y]补码
2)区别补码和求补运算两个概念,如+5的补码就是0000 0101,但是+5的求补运算则是:0000 0101→1111 1010→1111 1011 比如32+(-25)=7,按上面公式计算:
[32+(-25)]补码=[32]补码+[(-25)]补码,利用上面公式(1),可以得到[-25]补码={[25]补码}求补,而25补码就是它本身。
如果把正数求补运算还理解成正数补码就是它本身的话,就会得到[-25]
的错位结论。
实际上 25的补码是:0001 1001 补码=[25]补码
25补码的求补运算是:1110 0110→1110 0111
所以32+(-25)=0010 0000+1110 0111=0000 111=7
3)熟悉ASCⅡ码的字符表示
第四节几种基本的逻辑运算
1、与运算
符号及真值表:∧,A∧B只有一种情况为真,即A,B都真时为真,其他情况为假。
2、或运运算
符号及真值表:∨,A∨B在A.B中有一个为真时即为真,A,B都假时才为假。
3、非运算
符号:---A
4、异或运算
符号及真值表:∀,A∀B在A,B取值相异时为真,相同时为假。
本周要求掌握的内容如下:
基本概念:基数、权、数制、数码的机器表示方式、补码的加减法运算法则、逻辑运算。
基本理论:数制间的转换方法,数码的各种码制间的转换方法,会用补码进行加减运算,熟悉四种逻辑运算真值表。
练习:
1、用降幂法和除法将下列十进制数字转换为二进制数:
(1)369 (2)4095 (3)2.54
2、将下列十六进制数转化为二进制数和十进制数:
(1)FA (2)5B (3)FFFE
3、将下列二进制数转化为十六进制数和十进制数:
(1)101101 (2)10000000 (3)11111111
4、用8位二进制补码计算下列题目,结果用十六进制数表示:
(1)(-85)+76 (2)85+(-76)(3)85-76
5、下列字符的ASCⅡ码是多少,A,a,回车(CR),换行(LF)?。