微机原理第4章1
微机原理与应用-04 汇编语言
例:把片外RAM2200H单元中的数送入片内70H单元中。
BEGIN:MOV
MOV MOVX MOV
13
DPTR,#2200H ;(DPTR)=2200H
R0,#70H A,@DPTR @R0,A
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
1、标号字段
后必跟“ :”号; 首字符必是字母,由1~8个ASCII 码 字符组成; 同一标号在一个程序中只能定义一次; 不能使用指令助记符、伪指令、寄存器 的符号名称; 一条语句的标号可有可无,取决于本程 序的其他语句是否访问该条语句。
《微机原理及应用》课件
(2) 机器汇编
汇编语言 源程序
汇编
机器语言 目标程序
汇编程序
用机器汇编,方便快捷,并能在汇 编过程中发现语法错误。
8
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
Medwin汇编环境示例
9
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
《微机原理及应用》课件
2. 汇编语言
面向机器的符号语言,指令用助记符表示; 指令直接访问CPU的寄存器、存储单元和 I/O端口,响应速度快,程序的存储空间 利用较高; 汇编语言是面向机器的语言,因此使用者 必须对机器的硬件结构和指令系统比较熟 悉。
5
南京航空航天大学机电学院机械电子工程系 2005年
33
南京航空航天大学机电学院机械电子工程系 2005年
《微机原理及应用》课件
(2)子程序的参数传递
a. 利用寄存器(R0~R7和A)传递参数
微机原理与接口技术-第4-1章
例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END
微机原理第四章课后习题答案
第四章课后作业(6—27)6.试按下列要求分别编制程序段。
(1)把标志寄存器中符号位SF置“1”。
(2)寄存器AL中高、低四位互换。
(3)由寄存器AX、BX组成一个32位带符号数(AX中存放高16位),试求这个数的负数。
(4)现有三个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下,实现(A)+(B) C。
(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1 形成奇数)。
答:(1) LAHFOR AH,80HSAHF(2) MOV CL,4ROL AL,CL(3) MOV CX,0NEG BXJC CHGJMP GOCHG: MOV CX,1GO: NEG AXSUB AX,CX(4) MOV CL,AMOV AL,BMOV X,ALCHECK:INC XDEC CLJNZ CHECK(5) OR CX,0001H7.试给出下列各指令的机器目标代码。
(1)MOV BL,12H [SI](2)MOV 12H [SI],BL(3)SAL DX,1(4)AND 0ABH [BP] [DI],1234H答:(1)100010 1 0 01 011 100 00010010=8A5C12H(2)100010 0 0 01 011 100 00010010=885C12H(3)110100 0 1 11 100 010=0D1E2H(4)100000 0 1 10 100 011 10101011 00000000 00110100 00010010=81A3AB003412H8.执行下列指令:STR1 DW ‘AB’STR2 DB 16DUP(?)CNT EQU $-STR1MOV CX,CNTMOV AX,STR1HLT执行完成之后,寄存器CL的值是多少?寄存器AX的值是多少?答:因为CNT=16+2=18,所以CX=18=0012H,所以CL=12H=0001,0010;AX中装入的是‘AB’的ASCII码值,其中‘A’在高位AH中,‘B’在低位AL 中,所以AX=4142H=0100,0001,0100,0010。
微型计算机原理-第4章(4)微机原理与接口技术(第三版)(王忠民)
第四章 80x86 指令系统—累加器专用指令
⑴ 输入指令 ①直接寻址的输入指令 指令格式及操作:
IN acc, port ;(acc) ←(port)
②间接寻址的输入指令
指令格式及操作:
IN acc, DX
;(acc) ←((DX))
第四章 80x86 指令系统—累加器专用指令
⑵ 输出指令
①直接寻址的输出指令 指令格式及操作:
第四章 80x86 指令系统—通用数据传送指令
说明: *堆栈按后进先出原则组织。 *堆栈操作以字为单位进行。 *目的操作数dst不可以是CS。 *指令中的操作数不能是立即数。
第四章 80x86 指令系统—通用数据传送指令
例:已知(AX)=1234H,(BX)=5678H,分析下面程序段的执 行过程。
REG <=> REG/MEM • 段寄存器的内容不能参加交换
例: XCHG BX,[BP+SI]
第四章 80x86 指令系统—累加器专用指令
(二) 累加器专用指令 这类指令中的一个操作数必须是累加器。累加器操作数可以 是8位的,也可以是16位的。
第四章 80x86 指令系统—累加器专用指令 1.输入/输出指令
DI 1234H DS 4000H
DM
34H 2130H 12H 00H 2132H 40H
第四章 80x86 指令系统—地址传送指令
3. 地址指针装入ES指令 指令格式:
LES reg16, mem32 此指令的功能是将源操作数所对应的双字长的内存单元中的高 字内容(一般为16位段基址)送入ES,低字内容(一般为偏移地址) 送入指令所指定的寄存器中。例如:
LES DI, [2130H]
DI 1234H ES 4000H
微机原理 第四章 微型计算机指令系统
例: 已知: DS=2000H; SI=1000H 指令: MOV [SI+disp],AX
青岛理工大学琴岛学院
寄存器间接相对寻址过程示意图
CPU
寄存器间接相对 SI=1000H
MOV [SI+20H] 程序 ,AX
CS 偏移1000H
DS
SS
ES
位移20H
青岛理工大学琴岛学院
寄存器相对寻址过程示意图
真正数据所在的地址
青岛理工大学琴岛学院
错误指令举例: 6)基址变址寻址: MOV [BX+CX],AX ; CX不能做变址寄存器 MOV [BX+BP],AX ; BP不能作为变址寄存器 操作数的有效地址 EA等于一个基址寄存器( BX或 MOV [BX+DI],ARRAY; BP)与一个变址寄存器( SI或DI)的内容之和;
总时间=基本执行时间+计算EA的时间+执行总线读/写周期的时间
指令的基本执行时间随指令类型的不同差异很大,访问存 储器既要执行总线的读/写周期,又要计算操作数的有效地址 EA,计算EA的时间又与指令的寻址方式有关。
青岛理工大学琴岛学院
4.2 8086/8088指令系统
数据传送类指令
算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理器控制类指令
21000H 20 位 物 理 地 址 真正数据所在的地址 Memory DS … 20000H
…
78H 21000H 56H
青岛理工大学琴岛学院
4)寄存器间接寻址:
此方式的操作数存放在存储器单元中,指令给出的 16位寄存器值就是该操作数所在存储单元的EA。
例: 已知: (DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;(AX) ((DI)) 注:使用BX、SI、DI,操作数在DS段;BP时在SS段 其中寄存器只能是BX、SI、DI、BP
第4章(1)微机原理与接口技术(第三版)(王忠民)
第四章 80x86 指令系统—立即数寻址方式
MOV AX, 1234H
程序存储器
AH AL
12H 34H 操作码字节 指
34H 令
12H
码
第四章 80x86 指令系统—寄存器寻址方式
2)寄存器寻址方式 操作数存放在CPU的内部寄存器reg中:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器seg: CS、DS、SS、ES
微机原理与接口技术
西安邮电大学计算机学院 宁晓菊
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本章主要内容
1 80x86指令的寻址方式(3讲) 2 80x86指令系统(5讲)
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本讲主要内容
1 寻址方式概述 2 数据寻址方式之一:
80 21H
操作码
代
21H
码
AL
段
80
第四章 80x86 指令系统—I/O端口寻址方式
⑵ 间接端口寻址方式 MOV DX, 1234H OUT DX, AL
I/O接口 0001H
DX
12
34
0002H
……
AL
80 1234H
80
Thank you!
感谢
谢谢,精品课件 资料搜集
第四章 80x86 指令系统—立即数寻址方式
1)立即数寻址方式 指令中的操作数直接存放在机器代码中,紧跟在操
作码之后(操作数作为指令的一部分存放在操作码 之后的主存单元中)
微机原理第04章(寻址方式和传送指令)
2、指令组成 计算机中指令由操作码字段和操作数字段两部分组成。 一条可以由1~7个字节组成。 操作码字段-----―指示计算机要执行的操作, 操作数字段-----―指出在指令执行操作过程中所需要的操作数; 可以是操作数本身;可以是操作数地址或是地址的一部分;可以 是指向操作数地址的指针或其他有关 操作数的信息。
+ 1 1 SS 1000H 0 0 0 BP 3000H 0 ...
3 0 0 0 3 AH 12H 0 0 AL 34H 0
13000H
执行前: (SS)=1000H ,
(BP)=3000H , (AX)=1234H 执行后:PA=13000H (13000H)=1234H
34H 12H
堆 栈 段
55H
代 码 段
... 50000H 55040H ... 48H 55H ... 堆 栈 段
指令执行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H
寄存器相对寻址方式 MOV AX,COUNT[BP]
用途:这种寻址方式同样用于表格处理。 表格首地址COUNT 修改基址或变址寄存器来取得表格中的值。 例:某数据表的首地址为COUNT 欲读取表中第10个数据,存放到(AL)中。
演示
;AX←DS:[SI+06H]
8086/8088 CPU 中有两个变址寄存器 : 源变址寄存器 SI ; 目的变址寄存器 DI 。
操作数一般在内存的数据段中,但允许段跨越。 除有段跨越前缀之外,形成物理地址有二种方式:
(BX) PA=16d ×(DS)+ (SI) (DI) + 16位位移量 8位位移量
段内偏移量为适应各种数据结构的需要,可以有几个部分组 成,所以也把它称为有效地址EA。
微机原理 第4章作业答案
第3章指令系统3.9 设段寄存器DS=1000H,SS=2000H,ES=3000H,通用寄存器BX=4000H,BP=5000H,SI=6000H,DI=7000H。
在下列各指令中指出存储器操作数的寻址方式,求出有效地址EA、物理地址PA,并分别用物理地址和逻辑地址说明指令执行结果。
(1)MOV CX, [2300H]直接寻址EA=2300HPA=DS*16+EA=1000H*16+2300H=12300H 执行结果:(12300H)→CL,(12301H)→CH (2)MOV BYTE PTR [BX], 8FH寄存器间接寻址EA=BX=4000HPA=DS*16+EA=1000H*16+4000H=14000H 执行结果:8FH→(14000H)(3)MOV DH, [BP+3000H]基址寻址EA=BP+3000H=8000HPA=SS*16+EA=2000H*16+8000H=28000H 执行结果:(28000H)→DH(4)MOV ES: [SI+1210H], AX变址寻址EA=SI+1210H=7210HPA=ES*16+EA=3000H*16+7210H=37210H 执行结果:AL→(37210H),AH→(37211H) (5)MOV [BX+DI+50H], AL基址变址位移寻址EA=BX+DI+50H=0B050HPA=DS*16+EA=1000H*16+0B050H=1B050 H执行结果:AL→(1B050H)(6)INC WORD PTR [BX+SI]基址变址寻址EA=BX+SI=0A000HPA=DS*16+EA=1000H*16+0A000H=1A000 H执行结果:(1A000H)中存放的字的值加13.11 指出下列指令中源操作数的寻址方式。
(1)MOV BL, 0F9H 立即寻址(2)ADD [BX], SI 寄存器寻址(3)SUB CL, [4000H] 直接寻址(4)CMP DX, [SI] 寄存器间接寻址(5)AND SL, [BX+1] 基址寻址(6)OR BP, [DI+2100H] 变址寻址(7)XOR AX, [BP+SI] 基址变址寻址(8)MOV CX, 300 立即寻址3.12 下列指令都是非法的,指出各指令错在哪里?(1)MOV SI, AH两个操作数字长不一致(2)MOV 70H, BL立即数不能做目的操作数(3)MOV CX, F123H十六进制的数以字母打头必须在前面补0 (4)MOV [BX], 6AH两个操作数的字长不确定(5)MOV ES, 5000H立即数不能直接送段寄存器(6)MOV [DI], [3000H]两个操作数不能同为内存操作数(7)MOV DS, SS两个操作数不能同为段寄存器(8)MOV CS, AX不能对CS赋值(9)MOV AL, [CX]寄存器间接寻址中不能使用CX(10)MOV [BX+BP], DX存储器寻址方式中表示有效地址不能同为两个基址寄存器(11)MOV BH, [SI+DI+2]存储器寻址方式中表示有效地址不能同为两个变址寄存器(12)PUSH AL入栈出栈操作必须以字为单位(13)LEA AX, BXLEA指令中源操作数必须为存储器寻址方式(14)LDS BL, [5100H]LDS指令中目的操作数必须为16位的通用寄存器(15)IN AH, DXIN指令中目的操作数必须为AL或AX (16)OUT 288H, AL输入输出指令中端口地址为16位,必须先送给DX(17)ADD [2400H], 1234H两个操作数的字长不确定(18)XOR [2500H], [BX+10H]两个操作数不能同为内存操作数(19)INC [SI]操作数的字长不确定(20)MUL 10MUL指令的操作数不能为立即数(21)IDIV [BP+DI+1300H]操作数的字长不确定(22)SAL AL, 2移位次数大于1必须先送给CL3.14 设SP=2000H,AX=3000H,BX=5000H,执行以下3条指令后,问SP=?AX=?BX=? PUSH AX ;SP减2,栈顶元素为3000HPUSH BX ;SP减2,栈顶元素为5000HPOP AX ;SP加2,将栈顶元素5000H弹出至AX结果:SP=1FFEH,AX=5000H,BX=5000H3.16 下列程序执行完后,AX=?BX=?CX=? MOV AX, 1122HMOV BX, 3344HPUSH AX ;栈顶元素为1122H POP CX ;将栈顶元素1122H 弹出至CXXCHG BX, CX ;BX=1122H,CX=3344HLEA CX, [BX] ;CX=BX=1122H结果:AX=1122H,BX=1122H,CX=1122H3.17 CPU分别执行下列各程序段后,写出各个执行结果的状态标志位OF、SF、ZF、AF、PF、CF的值。
微机原理课后习题答案
第二章1.8086CPU由哪两部分组成?它们的主要功能是什么?8086CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作是并行的。
总线接口部件BIU的功能:地址形成、取指令、指令排队、读/写操作数和总线控制。
所有与外部的操作由其完成。
指令执行部件EU的功能:指令译码,执行指令。
2.8086CPU中有哪些寄存器?各有什么用途?8086CPU的寄存器有通用寄存器组、指针和变址寄存器、段寄存器、指令指针寄存器及标志位寄存器PSW。
4个16位通用寄存器,它们分别是AX,BX,CX,DX,用以存放16位数据或地址。
也可分为8个8位寄存器来使用,低8位是AL、BL、CL、DL,高8位是AH、BH、CH、DH,只能存放8位数据,不能存放地址。
指针和变址寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。
段寄存器给出相应逻辑段的首地址,称为“段基址”。
段基址与段内偏移地址结合形成20位物理地址。
指令指针寄存器用来存放将要执行的下一条指令在现行代码中的偏移地址。
16位标志寄存器PSW用来存放运算结果的特征,常用作后续条件转移指令的转移控制条件。
5.要完成下述运算或控制,用什么标志位判断?其值是什么?⑴比较两数是否相等?将两数相减,当全零标志位ZF=1时,说明两数相等,当ZF=0时,两数不等。
⑵两数运算后结果是正数还是负数?用符号标志位SF来判断,SF=1,为负数;SF=0,为正数。
⑶两数相加后是否溢出?用溢出标志位来判断,OF=1,产生溢出;OF=0,没有溢出。
⑷采用偶校验方式。
判定是否要补“1”?用奇偶校验标志位判断,有偶数个“1”时,PF=1,不需要补“1”;有奇数个“1”时,PF=0,需要补“1”。
(5)两数相减后比较大小?●ZF=1时,说明两数是相等的;●ZF=0时:无符号数时,CF=0,被减数大;CF=1,被减数小。
带符号数时,SF=OF=0或SF=OF=1,被减数大;SF=1,OF=0或SF=0,OF1,被减数小。
微机原理习题答案4
微型计算机原理第4章习题参考答案4.1已知某数据段中有COUNT1 EQU 16HCOUNT2 DW 16H下面两条指令有何异同。
MOV AX,COUNT1MOV BX,COUNT2解: 同:执行完之后,AX=BX=16H异:MOV AX,COUNT1向AX中传送的是立即数,而MOV BX,COUNT2向BX中传送的是变量内容。
4.2下列程序段执行后,寄存器AX、BX和CX的内容分别是多少?ORG 0202HDA-WORD DW 20HMOV AX,DA-WORD ;AX=0020HMOV BX,OFFSET DA-WORD ;BX=0202HMOV CL,BYTE PTR DA-WORD ;CL=20HMOV CH,TYPE DA-WORD ;CH=02H解: AX=0020H,BX=0202H,CX=0220H4.3设平面上有一点P的直角坐标(x,y),试编制完成以下操作的程序:如P点落在第I象限,则K=I;如P点落在坐标轴上,则K=0。
解:DAT SEGMENTmsg db 'please input number only!$'MSG1 DB 10,13,'INPUT X:$'MSG2 DB 10,13,'INPUT Y:$'xbuf db 20,0xbuf1 db 20 dup(?)ybuf db 20,0ybuf1 db 20 dup(?)D1 DB 10,13,'K='D2 DB '?,$'DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DA TBG: MOV AX,DATMOV DS,AXmov dx,offset msgmov ah,9int 21hMOV DX,OFFSET MSG1MOV AH,9INT 21Hmov dx,offset xbufMOV AH,0AHINT 21HMOV DX,OFFSET MSG2MOV AH,9INT 21Hmov dx,offset ybufMOV AH,0AHINT 21HCMP ybuf1,'0'JE PRO1CMP xbuf1,'0'JE PRO1cmp xbuf1,'-'Jz PRO2CMP ybuf1,'-'Je PRO4MOV D2,'1'JMP SHOWPRO1: MOV D2,'0'JMP SHOWPRO2: CMP ybuf1,'-'Je PRO3MOV D2,'2'JMP SHOWPRO3: MOV D2,'3'JMP SHOWPRO4: MOV D2,'4'SHOW: MOV DX,OFFSET D1MOV AH,9INT 21Hmov ah,4chint 21hCOD ENDSEND BG4.4 试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放于CHAR2开始的内存单元中。
微机原理 第4章 总线 习题及参考
第四章总线1. 什么是总线?答:总线是许多信号线的集合,是微机系统中连接各部件的信息通道,通过它实现数据的相互交换。
具体地说,总线是CPU内部各组成部件之间、微机芯片之间、系统各模块之间,或各设备之间传递数据信息、地址信息、控制和状态信息的通道。
2. 总线结构的优点是什么?答:概括起来有以下四点:1)支持模块结构的设计方法,可以简化系统设计;2)标准总线得到多厂商的广泛支持,便于生产与之兼容的硬件板卡和软件,具有开放性和通用性;3)便于模块的专业化生产和产品的升级换代,便于故障诊断和维修,灵活性好。
4)降低了设计及系统成本。
3. 按照布局范围,总线分为哪几种类型?答:四种类型:①内部总线——是处于CPU内部、用来连接片内运算器和寄存器等各个功能部件的总线。
内部总线的对外引线称为CPU总线。
②局部总线——是主机板上的信息通道,连接主机板上各个主要部件,而且通过扩展槽连接多种适配器(局部总线是组成微机系统的主框架)。
③系统总线——是多处理器系统中连接各CPU插件板的信息通道,用来支持多个CPU的并行处理。
④外部总线——是微机和外部设备之间或者几个微机系统之间的信息通道,又称通信总线。
4. 微机系统中常用的系统总线有哪几种?答:ISA总线、EISA总线、PCI总线、AGP总线等。
5. 按照功能,总线可分为哪几类?答:分为数据总线、地址总线和控制总线等三类。
数据总线、地址总线和控制总线分别用来传输数据、地址、命令和状态信号。
6. 为什么引入PCI总线有利于提高微机系统的整体工作性能和效率?答:随着各种应用软件的发展,需要在CPU与外设之间进行大量的高速数据传输。
以往的ISA总线及以后发展的EISA总线都未能解决总线的高效率传输问题。
PCI总线提供了CPU 与外设之间的高速通道,有利于提高微机系统的整体工作性能和效率。
7. 总线的性能主要从哪几方面来衡量?答:三方面:①总线宽度——指一次可以同时传输的数据位数。
微机原理 第四章答案
15、设(DS)=C000H,(C0010H)=0180H, (C0012H)=2000H,执行LDS SI,[10H]后, (SI)=?, (DS)=? (SI)=0180 H,(DS)=2000 H
REP STOSW 程序段的功能:
将起始地址为0404 H开始的80 H(128)个字单元清成0 或将起始地址为0404 H开始的100 H(256)个字节单元清成0
11
第4章 微型计算机原理作业情况
13、 设(BX)=6B30H,(BP)=0200H,(SI)=0046H, (SS)=2F00H,(2F246H)=4154H,试求执行 XCHG BX,[BP+SI]后, (BX)=?,(2F246H)=? (BX)=4154H (2F246H)=6B30H
6
第4章 微型计算机原理作业情况
8、分别执行下列指令,试求AL的内容及各状态标志位的状态。
(1) MOV AL,19H ;
ADD AL,61H ;(AL)=7AH
OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0
(2) MOV AL,19H ;
SUB AL,61
;(AL)=0DCH
OF=0 SF=1 ZF=0 AF=1 PF=0 CF=1
(1) MOV CL,20H[BX][SI] ;(CL)=0F6 H
(2) MOV [BP][DI],CX
;(1E4F6 H)=5678 H
(3) LEA BX,20H[BX][SI] ;(BX)=0056 H
MOV AX,2[BX]
;(AX)=1E40 H
微机原理与接口技术 第04章 可编程定时器计数器8254
4.1 概述
输出(分频)
声音的产生:
对输出方波整形 变成正弦波,经放大处理接 到扬声器上,产生不同声音 的波形。
输入脉冲
若选择标准输入脉冲, 例1KHz,则当输入1000个标 准输入脉冲,需要1s,则当 计数值为1000时,输出端每 隔1s输出一个脉冲,实现了 定时。 计算初值:N=fclki / fouti
硬件启动:在写入计数初值后计数器不工作,只有当GATE信 号出现0到1的变化后,计数器才开始工作 初值自动重装:当计数结束后,即减1计数器减到规定值的时候, 存放在初值寄存器中的计数初值自动重新装入减1计数器,这种功 能称为初值自动装载(方式2和方式3具有此功能)
4.2.3 8254的工作方式
4.1 概述
实现定时/计数有三种不同的方法:
(1)软件定时:执行一个具有固定延迟时间的循环程序。
优点:不需外加硬件,灵活,定时较准确。 缺点:在定时过程中CPU不能做任何其它工作。
总结:适用于定时时间短的场合。
(2)硬件定时:采用中规模TTL或CMOS芯片外加电阻电容来实现的。 不同的时间间隔主要是通过配接不同的阻容值达到的。 优点:不占用CPU时间。 缺点:变换定时较难。 总结:适用于定时时间间隔固定的场合。
8254有6种工作方式:方式0~方式5。对于每一种工作方式, 由时钟输入信号CLK确定计数器递减的速率。门控信号GATE用于 允许或禁止计数器计数。计数结束时在输出线OUT上产生一个信 号。 无论采用哪一种工作方式,都会遵循下面几条原则: (1)控制字写入计数器时,所有的控制逻辑电路立即复位, 输出端OUT进入初始态(高电平或低电平)。 (2)计数初值写入后,要经过一个时钟上升沿和一个下降 沿,计数执行部件才开始计数。 (3)在时钟脉冲CLK的上升沿时,门控信号被采样。 (4)在时钟脉冲CLK的下降沿时,计数器作减1计数,输出 端OUT的波形也都是在时钟周期的下降沿时产生电平的变化。
微机原理及运用第4章
关系运算的操作数也必须为数字操作数。当关系成立时, 其结果为全 1;当关系不成立时,其结果为全 0。 汇编语言中的表达式不能构成单独语句, 只能是语句的 一个部分, 例如: MOVAX, BUF+2
ADDAL, VAL AND 0FH
JMPAGAIN+3 MOVBL, VB LE VA
4.1汇编语言基本概念
4.1.1汇编语言与机器语言
我们已经学过高级语言,例如BASIC语言或FORTRAN 语言,无论哪种语言,它都规定了一系列用于编写程序的语 句和应该遵循的语法规则。人们根据一种语言给定的语句及 其语法规则就可以写出程序,计算机则通过执行已编好的程 序来完成人们要求它完成的各种复杂功能。汇编语言也一样, 根据汇编语言的语句及其语法规则可以写出汇编语言程序。 但汇编语言与高级语言有较大的区别,汇编语言中的语句与 机器的种类和型号密切相关。
部分, 汇编时不形成任何目标码。注释必须以分号“;”开 头。 它可以作为语句的一个部分,也可以作为一个单独的语 句。
4.1.3汇编语言中的常数与表达式
1. 常数 常数可以分数值常数和字符串常数两类。数值常数按其 基数的不同,可以有二进制数、八进制数、十进制数、十六 进制数等几种不同的表示形式, 汇编语言中采用不同的后缀 加以区分。 B: 表示二进制数。 例如, 10110011B。
表示一条指令的这些字符常称为助记符。 我们必须指出, 采用助记符写出的程序,机器是不能直接执行的,因为上面 我们已经指出, 处理器在设计时是按二进制指令码考虑的。 所以,采用汇编语言编写的程序在执行前还必须将其“翻译” 成机器语言。通常将采用助记符指令写成的程序,称为源程 序,将它翻译成的机器语言程序称为目标程序。将汇编语言 的源程序翻译成目标程序的过程称为汇编过程或简称汇编。 汇编过程通常是由计算机完成的。它是通过执行一个专门完 成汇编的软件——称为汇编程序来实现的。既然写出的源程序 要由汇编程序将其翻译后才能执行,所以,我们编写的源程 序必须符合汇编程序的一系列要求或者规则,只有这样,你 的程序才能被正确地“翻译”。
微机原理 第4章
可擦除可编程的ROM(EPROM)
特点:芯片的上方有一个石英玻璃的窗口,通过紫 外线照射,芯片电路中的浮空晶栅上的电荷会形成光 电流泄漏走,使电路恢复起始状态,从而将写入的信 号擦去。
顶部开有一个圆形的石英窗口,用于紫外线透过擦除 原有信息 一般使用专门的编程器(烧写器)编程 编程后,应该贴上不透光封条
扩充存储器的数据宽度
用8b*32K的 EPROM芯片 27C256进行字节 数扩充,组成8b *64K的EPROM子 系统
RAS
动态RAM的刷新:
为保持电容CS中的电 荷不丢失,必须对动 态RAM不断进行读出 和再写入 CD数据线上分布电容
TS门控管
DRAM控制器的原理图
DRAM控制器的功能: (1)时序功能 (2)地址处理功能 (3)仲裁功能 P136
4.1.4 随机存取存储器RAM 1.SRAM 速度快 不需要刷新 片容量低 功耗大 2.DRAM 片容量高 需要刷新
4.选择存储器件的考虑因素
① 易失性:电源断开之后,存储器的内容是否 丢失。 ② 只读性 ③ 存储容量:每个芯片中的存储单元的总数。 ④ 速度:用存储器访问时间来衡量。访问时间 是指存储器接收到稳定地抵制信号到完成操作 的时间。 ⑤ 功耗
5. 半导体存储器的特点与分类
半导体存储器的特点: 1. 速度快,储存时间为ns级 2. 集成化 3. 非破坏性读出 半导体存储器分类: A. 从器件组成角度: 1.双极性存储器TTL(Transistor- Transistor Logic), 特点是速度快,功耗较低,集成度低。 2.单极性存储器是用MOS(Metal-Oxide-Semiconductor) 制成的存储器, 特点是集成度高,功耗低,价格便宜。
微机原理与接口技术(科学出版社)第4章课后习题及答案
微机原理与接口技术第四章课后习题1.指令主要有哪些分类方式? 其主要类别是什么?答:操作数、级别、功能。
操作数:无操作数、单操作数、双操作数三操作数;级别:机器指令和汇编指令功能:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;2.80X86的寻址方式有哪些?它们的具体含义是什么?答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式(1)立即寻址方式:操作对象是这个操作数本身(2)寄存器寻地址:操作对象是寄存器中的内容(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象3. 指出下列各指令中源操作数和目的操作数的寻址方式:⑴MOV BX,WORD PTR[2200H] ⑵ AAA⑶JUM 2200H ⑷ LES DI,[2100H]⑸ MOV [BX+SI+8], BX ⑹ ADD AX,[BP+3000H]答:⑴MOV BX, WORD PTR[2200H] 源操作数:直接寻址;目的操作数:寄存器寻址⑵AAA 源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址⑶JUM 2200H 程序转移段内直接寻址方式⑷LES DI,[2100H] 源操作数:直接寻址;目的操作数:寄存器寻址⑸MOV [BX+SI+8], BX 源操作数:寄存器寻址;目的操作数:相对基址变址寻址⑹ADD AX,[BP+3000H] 源操作数:直接寻址;目的操作数:寄存器相对寻址4. 设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500 H,则:(1)10202H(2)40300H(3)21010H(4)42156H(5)31510H5.写出清除AX寄存器内容的方法并比较。
微机原理
MOV AX, [BX+SI] MOV AX, [BX][SI] MOV AX, [BP+SI]
MOV AX, BX
;AX←BX
微机原理
§ 4.2.3 存储器寻址方式
存储器段的分配: 在对存储器进行操作时,内存一般可分成4个段,分别称为代码段
、数据段、堆栈段和附加数据段,每个段存放不同性质的数据,进
行不同的操作。 代码段:存放指令。
数据段:存放程序所使用的数据。
堆栈段:程序的堆栈区(子程序调用、系统功能调用、中断处 理等操作使用,是按“先进后出”原则访问的特殊存储区域)或作 为临时数据存储区。 附加数据段:辅助的数据区。 4个逻辑段的段基址分别放在相应的代码段寄存器CS、数据段 寄存器DS、堆栈段寄存器SS和附加段寄存器ES中,由这4个段寄存 器来指明每个段在内存中的起始地址。
, 标号: 指令助记符 操作数 ;注释
(1) 标号是给该指令所在地址取的名字,必须后跟冒号 (“:”),它可以缺省,是可供选择的标识符。规则: – 标识符由字母(a~z,A~Z)、数字(0~9)或某些特殊 字符(@,-,?)组成。 – 第一个字符必须是字母(a~z,A~Z)或某些特殊的符 号(@,-,?),但“?”不能单独作标识符。
MOV AX, [SI+06H] MOV AX, 06H[SI]
微机原理
;AX←DS:[SI+06H] ;AX←DS:[SI+06H]
微机原理第4章习题与答案
……
PRGM ENDS
(3)ALPHA EQU BETA
(4) COUNT EQU 100
COUNT EQU 65
(5) GOON DW 10DUP(?)
……
JMP GOON
答案:
(1)字节变量,范围在0~255
(2)定义段的伪指令为SEGMENT
(3)BETA必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
MOV BX, F1
答案:
(1)
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255;QA=255
QA1=QA GT 3000;255大于3000,命题假,QA1=0
QA2=0FFFH;QA2=0FFFH
QA3 EQU QA2 XOR 255;QA3=0FFFH⊕0FFH=0F00H
AND AX, 0FFH;AX=0045H
MOV BX, WORD PTR G1;BX=0FF20H
MOV BX, 255 AND 0FH;BX=000FH
ADD AX, OFFSET F2;AX=1245H
MOV BX, F1;BX=2211H
4.以下程序的执行结果是_______。
ADB‘1234’
BDW5 DUP(2,3 DUP(0))
CDW‘AB’,’C’,’D’
L1:MOVAL,TYPE B
MOVBL,LENGTHB
MOVAH,SIZE A
MOVBH,SIZE C
MOVCL,TYPEL1
MOVCH,SIZEB
答案:AX=0102H,BX=0205HCX=0AFFH
微机原理第四章
机 了磁芯存储器的地位。目前,绝大多数计算机都使用的是
原 半导体存储器。
理
2.按存储器的存取方式分类
按存取方式可分为随机存取存储器、只读存储器等
(1) 随机存储器 RAM (Random Access Memory)
随机存储器(又称读写存储器)是指通过指令可以随机
地对各个存储单元进行读和写,在一切计算机系统中,主
1intel2164a的内部结构8位8位a0a1aa2a3a4a5a6a7vddvss128128存储矩阵1128行译码器128128存储矩阵128读出放大器读出放大器128读出放大器读出放大器微机原理地址锁存器14io门输出缓冲器dout行时钟缓冲器列时钟缓冲器写允许时钟缓冲器数据输入缓冲器rascaswedin121128列译码器128读出放大器128读出放大器121128列译码器128128存储矩阵128128存储矩阵1128行译码器?存储体
动态RAM的基本存储单元,由一个MOS管T1和位于其 栅极上的分布电容C构成。当栅极电容C上充有电荷时,
表示该存储单元保存信息“1”。反之,当栅极电容上没
有电荷时,表示该单元保存信息“0”。
动态RAM存储单元实质上是
字选线
微
依靠T1管栅极电容的充放电原理 来保存信息的 ,电容上所保存的
机 原
电荷就会泄漏。在动态RAM的使
(2) Intel 2164A的外部结构:
Intel 2164A是具有16个引脚的双列直插式芯片。
• A0~A7:地址信号的输入引脚; • R A S :行地址选通信号输入引脚;
• C A S :列地址选通信号输入引脚;
• W E :写允许控制信号输入引脚;
微 机
• DIN :数据输入引脚; • DOUT:数据输出引脚; • VDD:+5V电源引脚;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)OFFSET
格式: OFFSET 变量或标号
功能:返回标号或变量的偏移地址值(取标号或变量的 偏移地址)。
(2)SEG
格式: SEG 变量或标号 功能:用于取标号或变量的段基值。 例如: MOV AX, SEG M1 MOV DS, AX
(3)TYPE 格式: TYPE 变量或标号 功能:加在变量前,返回变量的类型属性。 TYPE运算符的返回值如下:
COUNT=COUNT+10 MOV AX, [COUNT]
注意:伪指令DB与EQU的区别
BUF1 DB 0AFH;表示在存储单元BUF1 中存放了数值AFH。 BUF1 EQU 0AFH;表示BUF1就代表了AFH。
三、 段定义伪指令 1、段定义语句SEGMENT和ENDS 一般地,一个完整的汇编源程序由3个段组成,即代码段、 堆栈段和数据段。段定义伪指令可将源程序划分成若干段,以便 生成目的代码和连接时将各同名段进行组合。 格式:段名 SEGMENT [定位类型] [组合类型] [„分类名’] 段名 ENDS
字节(DB)
字(DW) 双字(DD) 四字(DQ)
1
2 4 8
NEAR(内直) -1(FFH)
FAR (间直) -2(FEH)。
(4)LENGTH 格式: LENGTH 变量 功能:当变量中使用DUP时, LENGTH返回此变量所包 含的单元数,对其他变量则返回1。 (5) SIZE 格式: SIZE 变量 功能:返回变量所包含的总字节数。 LENGTH和SIZE只应用于数据存储器操作数(即用 DB/DW/DD等定义的操作数) 。 SIZE= LENGTH* TYPE
助记符字段说明伪指令的伪操作,常用的有以下几种: DB:定义字节,其后的每个操作数都占有一个字节。 DW:定义字,其后的每个操作数都占有一个字。低位字节 在低地址单元中,高位字节在高地址单元中。
பைடு நூலகம்
DD:定义双字,其后的每个操作数占有二个字。
DQ:定义4字长,其后的每个操作占有四个字。 DT:定义10个字节长。其后的每个操作数占有十个字节。 操作数:可以使常数、字符串、变量、标号、表达式等,多 个操作数之间用‚,‛隔开。
注意:SEGMENT和ENDS应成对使用,缺一不可。其中段名是 不可省略的, SEGMENT和ENDS前的段名必须相同。其它是可 选项,是赋予段名的属性,可以省略。 例如: DATA SEGMENT
DW 20DUP(?) DATA ENDS
定位类型:对该段起始地址定位。
PARA(节的整数边界,即16的整数倍),BYTE(任何字节单 元),WORD(字边界,即偶数),PAGE(页边界,即256的 整数倍)。
标号字段:是一个任选字段,性质为符号偏移量,一般用于标记 跳转指令的目的地址.在汇编过程中标号会被替换为一个16位的 数值偏移量.标号必须位于语句开头,结尾必须使用冒号。 操作码字段:也称为指令助记符,指令助记符是必不可少的,指 出计算机所要执行的操作(或操作类型),是一种助记符。
4.4 DOS系统功能调用和BIOS中断调用
ASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA ;DATA段值送AX MOV DS,AX ;AX内容送DS,DS才有实际段值
CODE ENDS
注意2:当程序运行时,由于DOS的装入程序负责把CS初 始化成正确的代码段地址,SS初始化为正确的堆栈段地址,
因此用户在程序中就不必设置。但是,在装入程序中DS寄
例如:
END
START
;表明该程序的启动地址为START。
1. 指令:让计算机完成某种操作的命令称为指令。 2. 指令系统:指令的集合即为指令系统。 3. 指令的一般格式: [标号:] 操作码 [操作数] [,操作数] ;[注释] 计算机中的指令由标号、操作码字段和操作数字段组成。
[ ]:任选项。
分类名:必须用单引号 ‘ ’ 括起来。选择不超过40个字符的 名称,用于连接时将所有分类名相同的逻辑段组成一个段组。
2、段分配语句ASSUME
格式: ASSUME CS:段名,DS:段名SS:段名,ES:段名, 功能:通知汇编程序,哪一个段寄存器是该段的段寄存器,以便 对使用变量或标号的指令汇编出正确的目的代码。在段名中,一 般CODE表示代码段,DATA表示数据段,STACK表示堆栈段。 注意1:由于ASSUME伪指令只指明某一个段地址应存于哪一个 段寄存器中,并没有包含将段地址送入该寄存器的操作。因此要 将真实段地址装入段寄存器还需用汇编指令来实现。这一步是不 可缺少的。 例如:CODE SEGMENT
组合类型:提出各个逻辑段之间的组合方式。 NONE(各段独立,不进行连接),PUBLIC(与其它模块中的 同名段连接时,地址由低到高),COMMON(连接时,与其 它模块中的同名段有相同的起始地址,采用覆盖方式,以最长 的长度为主),AT表达式(起始地址在节的整数边界上), STACK(指定堆栈段),MEMORY(连接时,与其它模块中 的同名段有相同的起始地址,采用覆盖方式,以第一个为主)。
当一个定义的存储区内的每个单元要放置同样的数据或在存 储器中预留多个存储单元时,可用DUP 定义重复变量操作符。 格式: n DUP(?) )‛中为要重复的数据。
其中:n 为重复的次数,‚(
如:BUF DB 100DUP(0)
;表示以BUF为首地址的100个字节中存放00H数据。
BUF1 DB 100 DUP(?)
上述变量定义中,BUF1从DATA段偏移地址为0的单元开始 存放,而BUF2则从DATA段偏移为2000H的单元开始存放,两 者不是连续存放。
2、 汇编结束伪指令END 该伪指令表示源程序的结束.令汇编程序停止汇编。 因此,任何一个完整的源程序在最后均应有END指令。 格式: END [表达式]
其中:表达式表示该汇编程序的启动地址。
3.修改属性运算符PTR 属性运算符用来给指令中的操作数指定一个临时属性,而暂 时忽略当前的属性。 PTR作用于操作数时,忽略操作数当前的类型(字节或字)及 属性(NEAR或FAR),而给出一个临时的类型或属性。 格式:类型 PTR 表达式 功能:将PTR 左边的类型属性赋给右边的变量或标号。 PTR本身 并不分配存储单元,仅给以分配的存储单元赋予新的属性,以保 证运算时操作数类型的匹配。 特点:不单独使用,与8086指令一起使用。 类型:BYTE:字节
即NEAR和FAR。
四、MASM中的表达式 表达式由运算对象(常数、变量、标号和地址)和运算符组成。 1.算术运算符、逻辑运算符和关系运算符 算术运算:+、-、×、÷、MOD(模除)、SHL、SHR
逻辑运算:AND、OR、 NOT 、 XOR
关系运算:EQ/NE/LT/GT/LE/GE(相等/不等/小于/大于/小于 等于/大于等于),结果为真,则返回0FFFFH,假则为0。 2. 数值返回运算符SEG、OFFSET、TYPE、 LENGTH和SIZE 加在变量或标号前,返回运算对象的某个参数值(如:段地 址值、偏移地址值、类型属性、变量包含的单元数、单元数)。
WORD:字 DWORD:双字
例如1:BUF DW 25
此时BUF已定义成字单元。若我们想取出它的第一 个字节内容,则可用PTR对其作用,使它暂时改变为字节 单元,即 MOV AL,BYTE PTR BUF
例如2:
JMP DWORD PTR [1000H]
;转移地址放在1000H开始的4个单元中,
低2个 字节为偏移量,高2个字节为段地址。
4.3 伪指令语句
一、数据定义及定义存储单元伪指令 功能:该类伪指令用来定义存储空间及其所存数据的长度。 格式:[变量] 助记符 操作数[,操作数][;注释]
变量字段是可选项,它用符号表示,其作用与指令语句前的 标号相同,但它的后面不跟冒号。汇编程序汇编时使其记以 第一个字节的偏移地址。
4.1 汇编语言程序格式
一. 指令性语句
指令性语句是指汇编程序可将其汇编成目标代码,能被机
器执行的语句。 二. 伪指令语句 伪指令用于对汇编程序进行控制,它不像指令性语句那 样是在程序运行期间由计算机来执行的,是在汇编程序对源 程序汇编期间由汇编程序处理的操作,不产生目的代码。可 以完成如数据定义、分配存储区、指示程序结束等功能。 格式: 名字 伪指令指示符 操作数[,操作数] [;注释]
如:
DA1
DA2 FIRST THIRD
DB
DW DB DB
10H,52H
1122H,34H „HELLO‟ „OK‟ „OK‟
SECOND DW
TABLE
DB
?
”?‛表示在TABLE单元中没有存放初值,TABLE单元中的 内容是随机的,在汇编过程中在TABLE单元处留出一个单元, 用户可以用这样的存储单元存放中间数据、运算结果。
计算机的硬件环境必须在操作系统的管理下才能工作。
裸机:缺少操作系统的计算机。 操作系统可分为:磁盘操作系统(DOS)、Windows、Linux等。 DOS命令:DIR、CD、COPY、PRINT、FORMAT 等 。 DOS的管理功能:管理I/O设备、磁盘和文件。一部分固化在 ROM(称为DOS BIOS)中,另一部分存放在磁盘中。 DOS 的BIOS应用:系统启动时,被调入内存,用户的应用程序 和 DOS操作系统通过软件中断来调用它们。
五、程序开始和结束语句 1、ORG 伪指令 ORG伪指令给汇编程序设置位置指针,指定下面的程序或 数据代码存放的起始偏移地址。 格式: ORG <表达式> 例如: DATA SEGMENT
BUF1 BUF2 DATA DB 23,56H,‘EOF‟ DB „STRING‟ ENDS
ORG 2000H
第四章
汇编语言程序设计
利用汇编语言编辑源程序(*.asm ),通过汇编程序翻译 成二进制代码的目标文件(*.obj .lst .crf ),再经过与库文 件的链接,最后得到可执行文件(*.exe .map .lst )程序,才 能在机器上直接运行。 4.1 汇编语言程序格式 4.2 MASM的表达式 4.3 伪指令 4.4 DOS系统功能调用和BIOS中断调用 4.5 程序设计方法