接口技术 第4章 (46)
微机原理与接口技术-第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
单片机原理及接口技术第四版答案

单片机原理及接口技术第四版答案【篇一:《单片机原理及接口技术(第2版)张毅刚》第4章习题及答案】第4章 at89s51单片机的中断系统思考题及习题41.外部中断1的中断入口地址为 ,定时器1的中断入口地址为。
答:0013h;001bh2.若(ip)=00010100b,则优先级最高者为,最低者为。
答:外部中断1,定时器t13.中断服务子程序与普通子程序有哪些相同和不同之处?答:reti指令在返回的同时自动清除相应的不可寻址的优先级触发器,以允许下次中断,而ret指令则没有这个操作。
除了这一点两条指令不同外,其它操作都相同。
4.下列说法正确的是。
答:da. 各中断源发出的中断请求信号,都会标记在at89s51的ie寄存器中b. 各中断源发出的中断请求信号,都会标记在at89s51的tmod寄存器中c. 各中断源发出的中断请求信号,都会标记在at89s51的ip寄存器中d. 各中断源发出的中断请求信号,都会标记在at89s51的tcon与scon寄存器中5.at89s51单片机响应外部中断的典型时间是多少?在哪些情况下,cpu将推迟对外部中断请求的响应?答:在一个单一中断的系统里,at89s51单片机对外部中断请求的响应时间总是在3~8个机器周期之间。
在下述三种情况下,at89s51将推迟对外部中断请求的响应:(1)at89s52正在处理同级或更高优先级的中断。
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。
(3)正在执行的指令是reti或是访问ie或ip的指令。
如果存在上述三种情况之一,at89s52将丢弃中断查询结果,将推迟对外部中断请求的响应。
6.中断查询确认后,在下列各种at89s51单片机运行情况下,能立即进行响应的是。
a. 当前正在进行高优先级中断处理b. 当前正在执行reti指令c. 当前指令是div指令,且正处于取指令的机器周期d. 当前指令是mov a,r3答:d7. at89s51单片机响应中断后,产生长调用指令lcall,执行该指令的过程包括:首先把的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送,使程序执行转向中的中断地址区。
(word完整版)微机原理与接口技术知识点总结整理,推荐文档

《微机原理与接口技术》复习参考资料第一章概述一、计算机中的数制1、无符号数的表示方法:(1)十进制计数的表示法特点:以十为底,逢十进一;共有0-9十个数字符号。
(2)二进制计数表示方法:特点:以2为底,逢2进位;只有0和1两个符号。
(3)十六进制数的表示法:特点:以16为底,逢16进位;有0--9及A—F(表示10~15)共16个数字符号。
2、各种数制之间的转换(1)非十进制数到十进制数的转换按相应进位计数制的权表达式展开,再按十进制求和。
(见书本1.2.3,1.2.4)(2)十进制数制转换为二进制数制●十进制→二进制的转换:整数部分:除2取余;小数部分:乘2取整。
●十进制→十六进制的转换:整数部分:除16取余;小数部分:乘16取整。
以小数点为起点求得整数和小数的各个位。
(3)二进制与十六进制数之间的转换用4位二进制数表示1位十六进制数3、无符号数二进制的运算(见教材P5)4、二进制数的逻辑运算特点:按位运算,无进借位(1)与运算只有A、B变量皆为1时,与运算的结果就是1(2)或运算A、B变量中,只要有一个为1,或运算的结果就是1(3)非运算(4)异或运算A、B两个变量只要不同,异或运算的结果就是1二、计算机中的码制1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。
数X的原码记作[X]原,反码记作[X]反,补码记作[X]补。
注意:对正数,三种表示法均相同。
它们的差别在于对负数的表示。
(1)原码定义:符号位:0表示正,1表示负;数值位:真值的绝对值。
注意:数0的原码不唯一(2)反码定义:若X>0 ,则[X]反=[X]原若X<0,则[X]反= 对应原码的符号位不变,数值部分按位求反注意:数0的反码也不唯一(3)补码定义:若X>0,则[X]补= [X]反= [X]原若X<0,则[X]补= [X]反+1注意:机器字长为8时,数0的补码唯一,同为000000002、8位二进制的表示范围:原码:-127~+127反码:-127~+127补码:-128~+1273、特殊数10000000●该数在原码中定义为:-0●在反码中定义为:-127●在补码中定义为:-128●对无符号数:(10000000)2= 128三、信息的编码1、十进制数的二进制数编码用4位二进制数表示一位十进制数。
《微机原理与接口技术》(第四版)周何琴课后习题答案

第1章绪论作业1. 将下列二进制数转换成十进制数。
(1)11001010B=202 (2)00111101B=61(3)01001101B=77 (4)10100100B=1643. 将下列十进制数分别转换为二进制数和十六进制数。
(2)76= 100 1100B =4CH(4)134= 1000 0110B =86H4. 求下列十进制数的BCD码(1)327=11 0010 0111(BCD码)(2)1256=1 0010 0101 0110(BCD码)6. 求出下列10进制数的原码、反码和补码(2)+85 (4)-85解:85=0101 0101B原码:+85= 0101 0101B -85= 1101 0101B反码:+85= 0101 0101B -85= 1010 1010B补码:+85= 0101 0101B -85= 1010 1011B10. 画出微型计算机的基本结构框图,说明各部分的主要功能是什么?解:微型计算机的基本结构框图如下:微处理器CPU:控制微处理器与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。
微处理器主要完成:(1)指令控制:从存储器中取指令,指令译码;(2)数据加工:简单的算术逻辑运算;(3)操作控制:在微处理器和存储器或者I/O之间传送数据;(4)时间控制:程序流向控制。
存储器:用来存放数据和指令。
I/O接口:主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。
I/O设备:输入原始数据和程序,转换成计算机能识别的信息,送入存储器去等待处理。
输出运算结果。
总线:连接计算机系统中各功能部件的信息通道。
第2章 8086CPU作业2. 8086CPU内部由哪两部分组成?它们的大致是如何工作的?答:(1)8086CPU由指令执行部件EU和总线接口部件BIU两部分组成。
(2)① BIU先执行读存储器操作,从给定地址单元中取出指令,送到先进先出的指令队列中等待执行。
微型计算机原理及接口技术(第三版)(裘雪红)作者提供课件章 (4)

& 1
≥1
G1
G2A Y0
G2B
74LS138
C B
Y1
A
A15 0 A14 0 A13 0 A12 0
A11 x A10
A9 A8
A7
A6 6116 A5 片内 A4 地址
A3 A2 A1 A0
5.2.1 静态读/写存储器(SRAM) 一、异步SRAM 3. 传统异步型SRAM连接举例
(2)利用ROM作译码器 现在要用4片6264构成一个存储容量为32 KB的存储
A12 WE OE CS2 DA000H~DBFFFH DE000H~DFFFFH
CS1 FA000H~FBFFFH FE000H~FFFFFH
19
5.2.1 静态读/写存储器(SRAM)
2. 传统异步型SRAM接口设计 (2) 译码电路的选择
利用译码芯片、门电路 74LS138:3-8译码器 74LS154:4-16译码器
类型
存储容量
特征
标准同步SRAM
2Mb~72Mb 直通型SRAM
流水线型SRAM
NoBL(无总线延Q迟D率R)来型型支同持步两4SMR项Ab同M~时7能2出够M现以b的2倍读数、零据写总传操线输作转速向时间
SRAM
时钟的上升沿和下降沿可分别
QDR型同步SRAM
18传M送b一~1次4数4M据b 四倍数据速率
同步SRAM的所有访问都在时钟的上升/下降沿启动, 地址、数据输入和其它控制信号均与时钟信号相关。
9
5.2.1 静态读/写存储器(SRAM)
1. 典型传统异步型SRAM芯片 SRAM 6264芯片
一、异步SRAM
10
8987654321 21111111111 76543210 C D DDDDDDDD N N CCV G E 89E01234567 4 6 W2SCAA11AO01A1SCAAAAAAAA21A 2 6 98765432 765432100 222222221
微机原理与接口技术(第四版)课后习题答案(1)

第1章微型计算机系统〔习题1.1〕简答题(2)总线信号分成哪三组信号?(3)PC机主存采用DRAM组成还是SRAM组成?(5)ROM-BIOS是什么?(6)中断是什么?(9)处理器的“取指-译码-执行周期”是指什么?〔解答〕②总线信号分成三组,分别是数据总线、地址总线和控制总线。
③ PC机主存采用DRAM组成。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑨指令的处理过程。
处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
〔习题1.3〕填空题(2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。
(3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。
(9)最初由公司采用Intel 8088处理器和()操作系统推出PC 机。
② 1MB,4GB③ 216,64KB(9)IBM,DOS〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接口与主机连接。
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计

例:
ORG 8000H TAB: DB 45H,73,‘5’,‘A’ : , , , TAB1:DB 101B :
伪指令ORG 定义了 定义了TAB的起始地址为 的起始地址为8000H, 伪指令 的起始地址为 , 伪指令DB定义了 定义了8000H~8003单元的内容依次为: 单元的内容依次为: 伪指令 定义了 ~ 单元的内容依次为 TAB (8000H)= 45H ) (8001H)= 49H ) (8002H)= 35H ) (8003H)= 41H ) TAB1 8004H)= 05H ( )
空间
例:
ORG 8000H DS 08H DB 30H,8AH , 即:8000H~8007H单元保留备用 ~ 单元保留备用 (8008H)=30H ) (8009H)=8AH )
MCS-51单片机伪指令 MCS-51单片机伪指令 单片机伪 8、位地址符号命令 BIT 、 格式: 格式: 字符名称 BIT 位地址
汇编 汇编语言 源程序 反汇编 机器语言
4.3.1
简单程序设计
请编写能把20 单元内两个BCD 20H BCD数变成相应的 [例4.1]请编写能把20H单元内两个BCD数变成相应的 ASCII码并放在21H 高位BCD数的ASCII 码并放在21 BCD数的ASCII码 22H ASCII码并放在21H(高位BCD数的ASCII码)和22H 低位BCD数的ASCII BCD数的ASCII码 单元的程序。 (低位BCD数的ASCII码)单元的程序。 分析: 分析: 1) 20H 单元存放的为 压缩 BCD 码 , 送入 中 , 先处 压缩BCD ) 20H单元存放的为压缩 BCD码 送入A中 理低四位,使用交换低四位指令,结果存入22 22H 理低四位,使用交换低四位指令,结果存入22H单 元 XCHD A,@Ri(唯一一个交换低四位指令) , (唯一一个交换低四位指令) 本设计用R0实现 实现。 本设计用 实现。 BCD码与 ASCII码关系 码与ASCII 码关系: BCD码 30H= 相应ASCII H=相应 2 ) BCD 码与 ASCII 码关系 : BCD 码 +30H= 相应 ASCII 码
微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。
1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。
2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。
3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。
4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV DI,-1
NEXT: INC DI
;DI为元素下标
CMP ARRAY[DI], 0 ;从0号元素起,逐个与0比较
LOOPZ NEXT
JNE OK
;ZF=0,即有非零单元素,转OK
MOV DL,‘0’
;没有找到非零元素,显示一个‘0’
OK: MOV DX,DI
OR DL,30H ;将下标字符转换成ASCII码
SHOW: MOV AH,02H
INT 21H
MOV AX,4C00H ;显示下标
INT 21H
;返回DOS
例6:在目的串中指定位置上插入字符串
;子程序名: STR_INSERT ;入口参数 DS:BX指向源串,ES:BP指向目的串,
ES:DX指向目的串中插入源串的位置。 每个串的前两个字节内为16位的串长度。 ;出口参数 在目的串指定位置上插入了源串
;实现W—(X+120)X Y
SBB
DX,BX
;结果在DX:AX中
ADD
AX,200
;实现W—(X+120)X Y+200
ADC
DX,0
;结果在DX,AX中
IDIV
Z
;最后除以Z,结果商在AX,余数在DX中
MOV
RESULT,AX
;存放结果到数据区
MOV
RESULT+2,DX
MOV
AH,4CH
;返回到DOS
;否,再加上07H
PRINTIT:
MOV
DL,AL
;输出单个字符
MOV
AH,02H
INT
21H
DEC
CH
JNZ
ROTATE
;继续下次转换
RET
BINHEX
ENDP
CSEG2
ENDS
END
例2:求无序表中的最大元素及其位置
;模块A, 文件名MAIN.ASM
EXTRN FOUND:NEAR
DATA1 SEGMENT… ARRAY DB d1,d2,d3, … dn
ENDS
SEGMENT
ASSUME CS:C_SEG,DS:D_SEG
MOV
AX,D_SEG
;填入段地址
MOV
DS,AX
MOV
AX,X
;X+120
ADD
AX,120
IMUL
Y
;(X+120)X Y
MOV
CX,AX
;乘积暂时存BX:CX
MOV
BX,DX
MOV
AX,W
;将W带符号扩展
CWD
SUB
AX,CX
COUNT EQU $ —ARRAY
;数据个数
DATA1 ENDS
CODE SEGMENT WORD PUBLIC ‘CODE ’
ASSUME CS:CODE,DS:DATA1
MAIN: MOV AX,DATA1
MOV DS,AX
;装入段基址
MOV CX,COUNT
LEA SI,ARRAY
CALL FOUND ;找出最大元素及位置
3. 多个模块的组合形式
NONE 表示本段为独立段,不与其他模块段发生连接逻辑。
PUBLIC 表示将本段与其他模块中说明为PUBLIC的同名段邻
接在一起,共用一个段地址。组成一个大的物理段(“段组”) 。
STACK 表示将该段与其他同名的堆栈段连接在一起,组合后
的物理段的长度等于参与组合的各堆栈段的长度之和。
MOV CX,4
;循环次数4→CX
RETRY: PUSH CX
MOV CL,4
SHL BX,CL
MOV DX,0
;DX:AX组成被除数
DIV WORD PTR[SI] ;除以权值,商、余数在AX、DX中
OR BX,AX
;压缩BCD 码
MOV AX,DX
;余数送AX
POP CX
ADD SI,2
;地址加2,指向下一权值
;键盘输入十进制数
MOV DEC—NUM,BX ;二进制数DEC—NUM
CALL FAR PTR BINHEX ;以十六进制形式显示
MOV AH,4CH
INT 21H
;返回DOS
;从键盘输入十进制数,将其转换为二进制数并送BX
DECBIN GETCHAR:
EXIT: DECBIN CSEG1
PROC MOV MOV INT SUB JL CMP JG MOV XCHG MOV MUL XCHG ADD JMP RET ENDP ENDS END
MOV
BX,DEC—NUM
MOV
CH,04H
;共有4位十六进制数
ROTATE:
MOV
CL,04H
ROL
BX,CL
;取最4bit二进制数待转换
MOV
AL,BL
AND
AL,0FH
ADD
AL,30H
;十六进制数 ASCII码
CMP
AL,3AH
;十六进制数在0~9之间吗?
JL
PRINTIT
;是,输出
ADD
AL,07H
W1000 DW 1000,100,10 , 1 ;十进制数千,百。十,个位权值
;子程序名:AX2TOBCD。入口参数:AX=二进制数。出口参数:AX=压缩BCD码
AX2TOBCD PROC NEAR
……
;保护现场
XOR BX,BX
;BCD码暂存单元清零
MOV SI,OFFSET W1000 ;权值首地址送SI
4.6模块化程序设计技术
1. 全局符号的定义与引用 单个模块中使用的符号(变量、标号或子程序名)为 局部符号。一个模块中定义的符号如不另加说明,均 为局部符号,局部符号只能在定义它的模块中使用。
多个模块可共同使用的符号为全局符号。只要将局部 符号在定义和使用它的模块中分别用 PUBLIC 和 EXTRN语句说明,即可作为全局符号(又称外部符 号)使用,全局符号构成了模块间通信的主要渠道。 2. 模块间的转移 模块间的转移有两种:近(段内)转移和远(段间) 转移。它们都是通过转移语句来实现的。具体实现转 移的语句是:JMP、CALL 和 INT。
BCDTO2 ENDP
例2:二进制数转换为BCD码 编程将AX中的二进制数转换成4位BCD码,转换的结 果放在AX中(设AX中的数值小于十进制数10000)。 算法:将AX中的二进制数除以1000得到的商是千位上 的BCD码,所得余数除以100得到的商是百位上的 BCD码,所得余数再除以10得到的商是十位上的BCD 码,最后所得的余数是个位上的BCD码。
SSEG ENDS
DSEG1 SEGMENT
DEC—NUM DW ?
DSEG1 ENDS
CSEG1 SEGMENT
ASSUME CS:CSEG1,DS:DSEG1
START: MOV AX,DSEG1
MOV DS,AX
;装入段基址
PUSH DS
JMP FAR PTR PROMPT
KEY—IN: CALL DECBIN
例1:键盘输入十进制数,以十六进制形式在屏幕上
显示。
;模块A 文件名MAIN. ASM
EXTRN PROMPT:FAR,BINHEX:FAR ;引用外部符号
PUBLIC DEC—NUM,KEY—IN
;定义外部符号
SSEG SEGMENT PARA STACK ‘ STACK ’
DB 100 DUP( ?)
ASSUME CS:CSEG2,DS:DSEG2
PROMPT: MOV AX,DSEG2
MOV DS,AX
;装入段基址
LEA
DX,MSG
MOV AH,09H
INT
21H
POP DS
JMP
FAR PTR KEY—IN
;将DEC—NUM中的二进制数转换为十六进制数的ASCII 码并输出
BINHEX
PROC FAR
NEAR BX,0 AH,1 21H AL,30H EXIT AL,09H
EXIT AH,0 AX,BX CX,0AH CX AX,BX BX,AX GETCHAR
START
;累加和BX(已转换的二进制)初始化
;键入值是否在0~9之间? ;否,转至EXIT
;是,将AX中的BCD数与BX内容交换 ;累加和AX乘以当前权值
W10 DW 10
;十进制数权值
;子程序名:BCDTO2。
入口参数:AX=BCD码。出口参数:AX=二进制数。
BCDTO2 PROC NEAR
PUSH BX
PUSH CX
PUSH DX
MOV BX,AX ;保存AX中的BCD码到BX
MOV AX,0
;结果单元清零
MOV CX,4
;共处理4位BCD码
RETRY: PUSH CX
RET
BINTOASC ENDP
例5:在字节数组中找出第一个非零元素,并显示它的下标
.MODEL SMALL
.DATA
ARRAY DB 0,0,0,25H,0,0,34H,36H,45H
COUNT EQU 9
.CODE
START: MOV AX, DATA
MOV DS,AX
MOV CX,COUNT
JB BTOA2
;小余10转BTOA2
XOR DX,DX ;被除数高字清0
DIV CX
;除以0
OR DL,30H ;余数变ASCII吗
MOV [SI],AL
;存最高位的ASCII码
DEC SI
;ASCII码地址减1
JMP BTOA1
BTOA2: OR AL,30H