汇编语言ppt
合集下载
《汇编语言》寄存器物理地址(第二章第二节)
DS ES SS CS 地 址 加 法 IP 器 地 址 总 线 AB
本课件由汇编网()制作提供
物理地址PA = 段地址 + 偏移地址 = ( 段寄存器 ) × 10H + 偏移地址 或段寄存器的内容左移4位,加上偏移地址
例:某内存单元的段地址由DS、偏移地址由BX给出。
2.5 16位结构的CPU
概括的讲,16位结构描述了一个CPU具有 以下几个方面特征:
1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。
2.6 8086CPU给出物理地址的方法
8086有20位地址总线,可传送20 位地址,寻址能力为1M。 8086内部为16位结构,它只能传送 16位的地址,表现出的寻址能力却 只有64K。
2.7 “段地址×16+偏移地址=物理地址” 的本质含义
两个比喻说明:
说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 说明“段地址×16+偏移地址=物理地址” 的思想:第二个比喻 8086CPU就是这样一个只能提供两张3位 数据纸条的CPU。
2.8 段的概念
错误认识:
内存被划分成了一个一个的段,每一个 段有一个段地址。
通用寄存器
数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI)
5
2.1 通用寄存器
8086CPU所有的寄存器都是16位的, 可以存放两个字节。 AX、BX、CX、DX 通常用来存放一般 性数据被称为通用寄存器。 下面以AX为例,我们看一下寄存器的 逻辑结构。
《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]
┆
过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令
单片机课件 汇编语言程序设计PPT
结构如下:
4.1 概述
---- 程序头( 即定义变量和等值符号)---SCL BIT P1.2 ;定义SCL位变量 SDA BIT P1.3 ;定义SDA位变量 ByteCon DATA 30H ;定义字节变量
ByteCon ……
ORG nnnn ;CPU复位后,第一指令机器码存 放单元地址,具体值由CPU类型决定。
用到的有关寄存器,如 Acc、PSW等,即保护现场 …… ;中断服务程序实体,具体指令由程序功能决
定 POP Acc POP PSW ;恢复现场
4.1 概述
CLR TI ;清除中断标志(在51系列中,对于电平触 发的外中断INT0和 INT1、串行接收及发送中断 RI、TI 等,不自动清除,需要在中断服务结束前,通过CLR指 令清除。
例4.9 在51系列中,外部中断0的入口地址为 0003H,显然只有0000H、0001H和0002H三个单 元,刚好可以存放一条长跳转指令的机器码。
4.1 概述
----- 主程序 ----ORG yyyy ;其中yyyy就是主程序代码存放区 的首地址,如0100H Main: MOV SP,#5FH ;初始化有关寄存器,如 设置SP、选择工作寄存器组。
际问题处理程序编写能力。
4.1 概述
4.1 概述 程序设计:为了解决某一个问题,将所设计应用
系统(单片机类型)的指令按一定顺序组合在一起。即用 计算机所能接受的语言把解决问题的步骤描述出来。
单片机汇编源程序结构与通用微机汇编源程序结构 略有不同,原因是:
1、一般没有可以直接利用的监控程序,所有程 序均要自己编写。
转移。(程序走向只有一条路径。)
例4.11 将两个半字节数组合成一个字节数。 设内部RAM中40H、41H单元分别存放着8位二进制
4.1 概述
---- 程序头( 即定义变量和等值符号)---SCL BIT P1.2 ;定义SCL位变量 SDA BIT P1.3 ;定义SDA位变量 ByteCon DATA 30H ;定义字节变量
ByteCon ……
ORG nnnn ;CPU复位后,第一指令机器码存 放单元地址,具体值由CPU类型决定。
用到的有关寄存器,如 Acc、PSW等,即保护现场 …… ;中断服务程序实体,具体指令由程序功能决
定 POP Acc POP PSW ;恢复现场
4.1 概述
CLR TI ;清除中断标志(在51系列中,对于电平触 发的外中断INT0和 INT1、串行接收及发送中断 RI、TI 等,不自动清除,需要在中断服务结束前,通过CLR指 令清除。
例4.9 在51系列中,外部中断0的入口地址为 0003H,显然只有0000H、0001H和0002H三个单 元,刚好可以存放一条长跳转指令的机器码。
4.1 概述
----- 主程序 ----ORG yyyy ;其中yyyy就是主程序代码存放区 的首地址,如0100H Main: MOV SP,#5FH ;初始化有关寄存器,如 设置SP、选择工作寄存器组。
际问题处理程序编写能力。
4.1 概述
4.1 概述 程序设计:为了解决某一个问题,将所设计应用
系统(单片机类型)的指令按一定顺序组合在一起。即用 计算机所能接受的语言把解决问题的步骤描述出来。
单片机汇编源程序结构与通用微机汇编源程序结构 略有不同,原因是:
1、一般没有可以直接利用的监控程序,所有程 序均要自己编写。
转移。(程序走向只有一条路径。)
例4.11 将两个半字节数组合成一个字节数。 设内部RAM中40H、41H单元分别存放着8位二进制
第3章汇编指令.ppt
如: BRA * BRA $
这两条指令均表示程序在当前位置处原地“踏步”。
5、“ * ”处于汇编语句中的第一列时,表示该行 为注释语句。 “ ;”之后的内容为注释。如:
*为日后的阅读提供方便而加注释* LDA #$5A ;传数指令
§3.1 M68HC08汇编语言的相关约定
6、M68HC08指令系统中的操作数多数为8位,但可 以通过在字节数前面加“>”的方法将其扩展为16位。
TAX ;A→X TXA ;X→A
§3.2 M68HC08寻址方式
3.2.2 立即寻址方式(IMM) 立即寻址方式中,操作数包含在操作码的后继字符 中,立即寻址指令多为2个字节,第一字节为操作码, 第二字节为操作数。 LDA #%01011010 ;%01011010→A ADD #$30 ; (A+$30)→A ADC #$30 ; (A+$30+C)→A AND #$FF ; (A∧$FF)→A LDHX #$8030 ;$8030→H:X中,80→H,30→X
移一位。
§3.2 M68HC08寻址方式
3.2.7 堆栈寻址方式
(2) 16偏移量堆栈寻址
LDA $0110,SP ; (SP+0110H)→A
ADD $0120,SP AND $0130,SP
; A+(SP+0120H)→A ; A∧(SP+0123H)→A
§3.2 M68HC08寻址方式
3.2.8 存储器到存储器寻址 指令格式:MOV 源操作数地址,目的操作数地址 (1)立即寻址到直接寻址(IMD)
LDA $0110,X ; (H:X+$0110)→A INC $0110,X ;(H:X+$0110)+1→(H:X+$0110) 变址寻址方式中三种方式都可以访问64K字节空间, 但汇编后的指令有长短,速度有快慢。无偏移量指 令最短,速度最快,扩展寻址方式指令最长,速度 最慢。
这两条指令均表示程序在当前位置处原地“踏步”。
5、“ * ”处于汇编语句中的第一列时,表示该行 为注释语句。 “ ;”之后的内容为注释。如:
*为日后的阅读提供方便而加注释* LDA #$5A ;传数指令
§3.1 M68HC08汇编语言的相关约定
6、M68HC08指令系统中的操作数多数为8位,但可 以通过在字节数前面加“>”的方法将其扩展为16位。
TAX ;A→X TXA ;X→A
§3.2 M68HC08寻址方式
3.2.2 立即寻址方式(IMM) 立即寻址方式中,操作数包含在操作码的后继字符 中,立即寻址指令多为2个字节,第一字节为操作码, 第二字节为操作数。 LDA #%01011010 ;%01011010→A ADD #$30 ; (A+$30)→A ADC #$30 ; (A+$30+C)→A AND #$FF ; (A∧$FF)→A LDHX #$8030 ;$8030→H:X中,80→H,30→X
移一位。
§3.2 M68HC08寻址方式
3.2.7 堆栈寻址方式
(2) 16偏移量堆栈寻址
LDA $0110,SP ; (SP+0110H)→A
ADD $0120,SP AND $0130,SP
; A+(SP+0120H)→A ; A∧(SP+0123H)→A
§3.2 M68HC08寻址方式
3.2.8 存储器到存储器寻址 指令格式:MOV 源操作数地址,目的操作数地址 (1)立即寻址到直接寻址(IMD)
LDA $0110,X ; (H:X+$0110)→A INC $0110,X ;(H:X+$0110)+1→(H:X+$0110) 变址寻址方式中三种方式都可以访问64K字节空间, 但汇编后的指令有长短,速度有快慢。无偏移量指 令最短,速度最快,扩展寻址方式指令最长,速度 最慢。
51单片机汇编语言指令教程(校对版)ppt课件
06
05
04
03
02
01
00
返回前一次
最新课件
19
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
三字节指令在存储器中存放的方式示意图
最新课件
9
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
MOV A,00H ;将RAM中00H单元数据送累加器A
MOV A,R0 ;将工作寄存器R0的内容送累加器A
这里使用了不同的寻址方式,其指令的结构也不相同。
前者是:11100101(0E5H)、00000000(00H) 双字节。
后者的机器码是:11101000(0E8H)
单字节;
在物理结构上,R0与RAM的00H单元恰好是同一单元, 所以不同的指令而执行结果是一样的。
或者:指令中分别包含1个字节的操作数和1个字节的操作 数地址。如:
MOV direct,#data 举例:MOV 20H,#0FFH
第3章ARM汇编语言程序设计GNU汇编ppt课件
BL 子程序名 即可完成子程序的调用。 该指令在执行时完成如下操作:将子程序的返回地址存放在连接寄存器LR中,同
时将程序计数器PC指向子程序的入口点,当子程序执行完毕需要返回调用处时, 只需要将存放在LR中的返回地址重新复制给程序计数器PC即可。在调用子程序的 同时,也可以完成参数的传递和从子程序返回运算的结果,通常可以使用寄存器 R0~R3完成。 以下是使用BL指令调用子程序的汇编语言源程序的基本结构:
.string/.asciz/.ascii
语法格式 .string/.asciz/.ascii 表达式{,表达式}...
作用
.string/.asciz/.ascii定义多个字符串。 注意:ascii伪操作定义的字符串需要自动添加结尾字符'\0'
举例
.string "abcd","hello"
bne 1f @跳转到1标号去执行 局部标号代表它所在的地址,因此也可以当作变量或
者函数来使用。
Linux汇编程序中的分段
(1).section伪操作
用户可以通过.section伪操作来自定义一个段,格式如下 :
.section section_name [, "flags"[, %type[,flag_specif
地址表达式expr的取值范围如下:
当地址值是字节对齐时,其取指范围为−255B~255B;
当地址值是字对齐时,其取指范围为−1020B~1020B。
ARM伪指令——小范围的地址读取
ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的 地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被 编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB 指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错 误,编译失败。
时将程序计数器PC指向子程序的入口点,当子程序执行完毕需要返回调用处时, 只需要将存放在LR中的返回地址重新复制给程序计数器PC即可。在调用子程序的 同时,也可以完成参数的传递和从子程序返回运算的结果,通常可以使用寄存器 R0~R3完成。 以下是使用BL指令调用子程序的汇编语言源程序的基本结构:
.string/.asciz/.ascii
语法格式 .string/.asciz/.ascii 表达式{,表达式}...
作用
.string/.asciz/.ascii定义多个字符串。 注意:ascii伪操作定义的字符串需要自动添加结尾字符'\0'
举例
.string "abcd","hello"
bne 1f @跳转到1标号去执行 局部标号代表它所在的地址,因此也可以当作变量或
者函数来使用。
Linux汇编程序中的分段
(1).section伪操作
用户可以通过.section伪操作来自定义一个段,格式如下 :
.section section_name [, "flags"[, %type[,flag_specif
地址表达式expr的取值范围如下:
当地址值是字节对齐时,其取指范围为−255B~255B;
当地址值是字对齐时,其取指范围为−1020B~1020B。
ARM伪指令——小范围的地址读取
ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的 地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被 编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB 指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错 误,编译失败。
PPT-汇编语言源程序的框架结构
JMP BX ;产生多分支转移TAB: JMP SHORT A0 ;转移表JMP SHORT A1JMP SHORT A2A0: LEA DX,S0 ;各分支程序段MOV AH,9INT 21HJMP EXIT1A1: LEA DX,S1MOV AH,9INT 21H
JMP EXIT1A2:LEA DX,S2MOV AH,9INT 21HJMP EXIT1ERROR: MOV DX,OFFSET ERMOV AH,9INT 21HEXIT1: MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START
A0: LEA DX,S0 ;各分支程序段MOV AH,9INT 21HJMP EXIT1A1: LEA DX,S1MOV AH,9INT 21HJMP EXIT1A2: LEA DX,S2MOV AH,9INT 21HJMP EXIT1
ERROR: MOV DX,OFFSET ERMOV AH,9INT 21HEXIT1: MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START
图5.8 用转移表法实现多路分支旳构造框图例5.5:编程实现菜单项选择择,根据不同旳选择做不同旳事情。解:假设有3路分支,转移表中旳转移指令分别为:JMP SHORT A0、JMP SHORT A1、JMP SHORT A2;详细见图5.9所示:
参照程序:DATA SEGMENTMENU DB 0DH,0AH,"0:Chinese!"DB 0DH,0AH,"1:English!"DB 0DH,0AH,"2: German!"DB 0DH,0AH,"Please choose one to answer the following question:$"
汇编语言指令
29.06.2021
精选版课件ppt
16
第四章 DSP汇编语言基础
DRSUB Lmem,src ; if C16=0, src=Lmem-src ;if C16=1, ; src(39-16)=Lmem(31-16)-src(31-16) ; src(15-0)= Lmem(15-0)-src(15-0)
ADD Smem[,SHIFT],src[,dst];dst=src+Smem<<SHIFT
ADD Xmem,SHFT,src; src=src+Xmem<<SHFT
ADD Xmem,Ymem,dst; dst=Xmem<<16+Ymem<<16
ADD #lk[,SHFT],src[,dst];dst=src+#lk<<SHFT
ST0中累加器A的溢出标志; ST0中累加器B的溢出标志; 目的累加器 (A or B)的溢出标志; 对应目的累加器 (A or B)的溢出标志; 源累加器 (A or B)的溢出标志; ST1中的溢出模式位; 16位端口立即数地址 (0 PA 65 535); 程序地址寄存器; 程序计数器; 16位立即数程序存储器地址 (0 pmad 65 535); 程序存储器操作数; 处理器模式状态寄存器;
EAB E可执行 地址总线;
EAR EAB 地址寄存器;
extpmad 23位立即数程序存储器地址;
FRCT ST1中的小数模式位;
hi(A) 累加器A的高位 (31–16)
HM ST1中的保持模式;
IFR 中断屏蔽寄存器;
29.06.2021
精选版课件ppt
4
第四章 DSP汇编语言基础
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
=11001100+01110100 =01000000
汇编语言程序设计
BCD码 十进制数的表示——BCD码
用4位二进制数表示一位十进制数。有两种表示法: 压缩BCD码和非压缩BCD码。
压缩BCD码的每一位用4位二进制表示,0000~1001 表示0~9,一个字节表示两位十进制数。
非压缩BCD码用一个字节表示一位十进制数,高4位 总是0000,低4位的0000~1001表示0~9。
1001 HT EM
)
1010 LF SUB
*
1011 VT ESC
+
1100 FF
FS
,
1101 CR GS
-
1110 SO
RS
.
1111 SI
US
/
注:H 表示高 3 位,L 表示低 4 位。
ASCII 字符表
011 100
0
@
1
A
2
B
3
C
4
D
5
E
6
F
7
G
8
H
9
I
:
J
;
K
<
L
=
M
>
N
?
O
101 110 111
n位反码表示数值的范围是 -(2n-1 -1) ~ +(2n-1 -1)
对应的反码是1000~ 0111。
汇编语言程序设计
0的反码
[+0]反 = 00000000 [-0]反 = 11111111 即:数0的反码也不是唯一的。
汇编语言程序设计
补码定义
定义: 若X>0, 则[X]补= [X]反= [X]原 若X<0, 则[X]补= [X]反+1
汇编语言
课程情况
教学:40学时 考试:平时20%,期末考试80%
答疑辅导
上课前,下课后
汇编语言程序设计
第1章 基础知识
1、不同进位记数制的表示 2、符号数的表示 3、二进制编码
汇编语言程序设计
不同进位记数制的表示 在数字后面加一个字母进行区分:
二进制:数字后面加B, 如1001B 八进制:数字后面加O, 如1001O 十进制:一般不加, 如1001 十六进制:数字后面加H , 如1001H; 如果以字母开头,则要在字母前面加一个0,如0AH
汇编语言程序设计
8位有符号数的表示范围
对8位二进制数:
原码: -127 ~ +127 反码: -127 ~ +127 补码: -128 ~ +127
16位有符号数的表示范围是多少?
汇编语言程序设计
补码的运算原理
模(module)就是一个计数系统的最大容量。例如,钟 表的模为12,8位二进制数的模为28。 凡是用器件进行的运算都是有模运算,运算结果超 过模的部分会被运算器自动丢弃。因此,当器件为 n位时,有 X=2n+X (mod 2n)
对应的原码是1111~ 0111。
汇编语言程序 0 0000000 - 0 = 1 0000000
即:数0的原码不唯一。
汇编语言程序设计
反码定义
定义: 若X>0 ,则 [X]反=[X]原 若X<0, 则 [X]反= 对应原码的符号位不变,数值 部分按位求反
汇编语言程序设计
ASCII字符表
H
L
000 001 010
0000 NUL DLE SP
0001 SOH DC1
!
0010 STX DC2
"
0011 ETX DC3
#
0100 EOT DC4
$
0101 ENG NAK %
0110 ACK SYN &
0111 BEL ETB
'
1000 BS CAN
(
X X = (2n - 1) + X
X= - 52 = -0110100
[X]原 = 10110100 [X]反 = 11001011
2n-1 > X ≥ 0 0 ≥ X > -2n-1
汇编语言程序设计
反码举例
符号
真值
X=+18=+0010010 X=-18=-0010010
反码
符号位
[X]反 =0 0010010 [X]反 =1 1101101
汇编语言程序设计
有符号数的表示
对于有符号数,常用的表示方法有原 码、反码和补码三种。数X的原码记 作[X]原,反码记作[X]反,补码记作 [X]补。
注意:对正数,三种表示法均相同。它们的 差别在于对负数的表示。
汇编语言程序设计
原码定义
定义: 符号位:0表示正,1表示负; 数值位:真值的绝对值。
X
不难验证, [X]补=2n+X (mod 2n)
因此, [XY]补= 2n + (XY) (mod 2n) = (2n+X) + (2n Y) (mod 2n) = [X]补+ [Y]补
汇编语言程序设计
补码运算举例 X=-0110100,Y=+1110100,求[X+Y]补 [X]原=10110100 [X]补= [X]反+1=11001100 [Y]补= [Y]原=01110100 所以: [X+Y]补= [X]补+ [Y]补
X X = 2n - X
2n-1 > X ≥ 0 0>X ≥ -2n-1
汇编语言程序设计
补码举例
X= –52= – 0110100 [X]原 = 10110100 [X]反 = 11001011 [X]补 = [X]反+1=11001100
n位补码表示数值的范围是
-2n-1 ~ +(2n-1 -1)
X
=
2n
-1
+
X
2n -1 > X ≥0 0 ≥-X > 2n -1
汇编语言程序设计
原码举例
符号
真值
X=+18=+0010010 X=-18=-0010010
原码
符号位
[X]原 =0 0010010 [X]原 =1 0010010
n位原码表示数值的范围是
-(2n-1 -1) ~ +(2n-1 -1)
汇编语言程序设计
非数值数据的表示
计算机中除了能够处理数值数据以外,还可以处理文 字、语音、图像等各种信息,这些信息统称为非数 值数据。
非数值数据在计算机中也必须以二进制形式表示,非 数值数据的表示本质上是编码的过程。
最常用的数据编码:美国标准信息交换代码 (American Standard Code for Information Interchange, ASCII码)
对应的补码是1000~ 0111。
汇编语言程序设计
0的补码
[+0]补= [+0]原=00000000 [-0]补= [-0]反+1=11111111+1
=1 00000000
对8位字长,进位被舍掉
∴[+0]补= [-0]补= 00000000
汇编语言程序设计
特殊数10000000
该数在原码中定义为: -0 在反码中定义为: -127 在补码中定义为: -128 对无符号数:(10000000)2 = 128
汇编语言程序设计
BCD码 十进制数的表示——BCD码
用4位二进制数表示一位十进制数。有两种表示法: 压缩BCD码和非压缩BCD码。
压缩BCD码的每一位用4位二进制表示,0000~1001 表示0~9,一个字节表示两位十进制数。
非压缩BCD码用一个字节表示一位十进制数,高4位 总是0000,低4位的0000~1001表示0~9。
1001 HT EM
)
1010 LF SUB
*
1011 VT ESC
+
1100 FF
FS
,
1101 CR GS
-
1110 SO
RS
.
1111 SI
US
/
注:H 表示高 3 位,L 表示低 4 位。
ASCII 字符表
011 100
0
@
1
A
2
B
3
C
4
D
5
E
6
F
7
G
8
H
9
I
:
J
;
K
<
L
=
M
>
N
?
O
101 110 111
n位反码表示数值的范围是 -(2n-1 -1) ~ +(2n-1 -1)
对应的反码是1000~ 0111。
汇编语言程序设计
0的反码
[+0]反 = 00000000 [-0]反 = 11111111 即:数0的反码也不是唯一的。
汇编语言程序设计
补码定义
定义: 若X>0, 则[X]补= [X]反= [X]原 若X<0, 则[X]补= [X]反+1
汇编语言
课程情况
教学:40学时 考试:平时20%,期末考试80%
答疑辅导
上课前,下课后
汇编语言程序设计
第1章 基础知识
1、不同进位记数制的表示 2、符号数的表示 3、二进制编码
汇编语言程序设计
不同进位记数制的表示 在数字后面加一个字母进行区分:
二进制:数字后面加B, 如1001B 八进制:数字后面加O, 如1001O 十进制:一般不加, 如1001 十六进制:数字后面加H , 如1001H; 如果以字母开头,则要在字母前面加一个0,如0AH
汇编语言程序设计
8位有符号数的表示范围
对8位二进制数:
原码: -127 ~ +127 反码: -127 ~ +127 补码: -128 ~ +127
16位有符号数的表示范围是多少?
汇编语言程序设计
补码的运算原理
模(module)就是一个计数系统的最大容量。例如,钟 表的模为12,8位二进制数的模为28。 凡是用器件进行的运算都是有模运算,运算结果超 过模的部分会被运算器自动丢弃。因此,当器件为 n位时,有 X=2n+X (mod 2n)
对应的原码是1111~ 0111。
汇编语言程序 0 0000000 - 0 = 1 0000000
即:数0的原码不唯一。
汇编语言程序设计
反码定义
定义: 若X>0 ,则 [X]反=[X]原 若X<0, 则 [X]反= 对应原码的符号位不变,数值 部分按位求反
汇编语言程序设计
ASCII字符表
H
L
000 001 010
0000 NUL DLE SP
0001 SOH DC1
!
0010 STX DC2
"
0011 ETX DC3
#
0100 EOT DC4
$
0101 ENG NAK %
0110 ACK SYN &
0111 BEL ETB
'
1000 BS CAN
(
X X = (2n - 1) + X
X= - 52 = -0110100
[X]原 = 10110100 [X]反 = 11001011
2n-1 > X ≥ 0 0 ≥ X > -2n-1
汇编语言程序设计
反码举例
符号
真值
X=+18=+0010010 X=-18=-0010010
反码
符号位
[X]反 =0 0010010 [X]反 =1 1101101
汇编语言程序设计
有符号数的表示
对于有符号数,常用的表示方法有原 码、反码和补码三种。数X的原码记 作[X]原,反码记作[X]反,补码记作 [X]补。
注意:对正数,三种表示法均相同。它们的 差别在于对负数的表示。
汇编语言程序设计
原码定义
定义: 符号位:0表示正,1表示负; 数值位:真值的绝对值。
X
不难验证, [X]补=2n+X (mod 2n)
因此, [XY]补= 2n + (XY) (mod 2n) = (2n+X) + (2n Y) (mod 2n) = [X]补+ [Y]补
汇编语言程序设计
补码运算举例 X=-0110100,Y=+1110100,求[X+Y]补 [X]原=10110100 [X]补= [X]反+1=11001100 [Y]补= [Y]原=01110100 所以: [X+Y]补= [X]补+ [Y]补
X X = 2n - X
2n-1 > X ≥ 0 0>X ≥ -2n-1
汇编语言程序设计
补码举例
X= –52= – 0110100 [X]原 = 10110100 [X]反 = 11001011 [X]补 = [X]反+1=11001100
n位补码表示数值的范围是
-2n-1 ~ +(2n-1 -1)
X
=
2n
-1
+
X
2n -1 > X ≥0 0 ≥-X > 2n -1
汇编语言程序设计
原码举例
符号
真值
X=+18=+0010010 X=-18=-0010010
原码
符号位
[X]原 =0 0010010 [X]原 =1 0010010
n位原码表示数值的范围是
-(2n-1 -1) ~ +(2n-1 -1)
汇编语言程序设计
非数值数据的表示
计算机中除了能够处理数值数据以外,还可以处理文 字、语音、图像等各种信息,这些信息统称为非数 值数据。
非数值数据在计算机中也必须以二进制形式表示,非 数值数据的表示本质上是编码的过程。
最常用的数据编码:美国标准信息交换代码 (American Standard Code for Information Interchange, ASCII码)
对应的补码是1000~ 0111。
汇编语言程序设计
0的补码
[+0]补= [+0]原=00000000 [-0]补= [-0]反+1=11111111+1
=1 00000000
对8位字长,进位被舍掉
∴[+0]补= [-0]补= 00000000
汇编语言程序设计
特殊数10000000
该数在原码中定义为: -0 在反码中定义为: -127 在补码中定义为: -128 对无符号数:(10000000)2 = 128