微机原理程序打印版本

合集下载

微机原理及应用CH5 80868088汇编语言程序设计

微机原理及应用CH5 80868088汇编语言程序设计

微机原理及应用
“分类名”(CLASS NAME)
其主要作用是汇编程序连接时将所有的分类名相同的 逻辑段组成一个段组。
微机原理及应用
在连接之前已定义两个目标模块如下: 模块1 SSEG SEGMENT PARA STACK
DSEG1 SEGMENT PARA PUBLIC 'Data' DSEG2 SEGMENT PARA CSEG SEGMENT PARA 'Code'
微机原理及应用
组合类型:组合类型参数主要提供了各个逻辑段之间的 组合方式
①NONE:该段与其他同名段不进行连接,各段独立于 存储器中,NONE可作为缺省参数。 ②PUBLIC:该段与其他模块中的同名段连接时,由低 地址到高地址连接起来,组成一个逻辑段,连接次序由 连接命令指定。 ③COMMON:该段在连接时与其他模块中的同名段有 相同的起始地址,采用覆盖的方式在存储器中存放,连 接长度为各分段中最大长度。
PROC1 ENDP CODE ENDS
;入栈保存地址 ;程序段前缀的首地址
;AL←X
;AL←X×4 ;AL←X×4-Y ;AL←(X×4-Y)/2 ;存结果 ;取程序段前缀首地址
微机原理及应用
§5.3 分支结构程序设计
分支程序结构可以有两种形式,如下图所示, 它们分别相当于高级语言程序中的IF-THEN-ELSE 语句和CASE语句,它们适用于要根据不同条件做 不同处理的情况。
;数据段
X DB 2
Y DB 4
Z DB ?
;定义变量
DATA ENDS
STACK SEGMENT
PARA STACK
DW 20H DUP(0)
STACK ENDS

微机原理课件ppt

微机原理课件ppt

04
微机程序执行过程
程序加载与执行
程序加载
将程序从存储介质中读取到内存中, 为程序的执行做好准备。
程序执行
CPU按照指令逐条执行程序,完成程 序所要求的任务。
指令执行流程
取指令
CPU从内存中读取指令并存放到指令寄存器 中。
指令译码
对指令进行译码,确定指令的操作码和操作 数。
执行指令
根据译码结果,完成相应的操作,如数据传 输、算术运算、逻辑运算等。
的外设接口。进入21世纪后,微机进一步 发展为DSP(数字信号处理)和FPGA(现 场可编程门阵列)等高性能计算平台。现在 ,微机已进入物联网和人工智能时代,成为
智能硬件的核心组成部分。
微机的应用领域
总结词
微机广泛应用于工业控制、智能家居、医疗设备、航 空航天等领域。
详细描述
由于微机具有体积小、功耗低、价格实惠等优点,它被 广泛应用于各种领域。在工业控制领域,微机可以用于 实现自动化生产线的控制和监测。在智能家居领域,微 机可以用于实现智能照明、智能安防、智能家电控制等 功能。在医疗设备领域,微机可以用于实现医疗影像处 理、医疗数据分析和医疗设备控制等功能。在航空航天 领域,微机可以用于实现飞行控制、导航数据处理和卫 星通信等功能。
立即数
表示常数或立即操作数的值。
注释
用于解释指令的含义和功能,方便阅读和理解。
指令类型
数据传输指令
用于在内存和寄存器之间传输数据,如 MOV指令。
逻辑运算指令
用于进行逻辑运算,如AND、OR、XOR等 指令。
算术运算指令
用于进行算术运算,如ADD、SUB、MUL 、DIV等指令。
控制转移指令
用于改变程序的执行流程,如JMP、CALL 、RET等指令。

微机原理微型计算机的程序设计

微机原理微型计算机的程序设计
W1
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:

微型计算机原理与汇编语言程序设计第二版ppt课件完整版

微型计算机原理与汇编语言程序设计第二版ppt课件完整版
8086经外部总线对存储器或I/O端口 进行一次信息输入或输出过程称总线操 作。 执行该操作所需要时间称总线周期。 8086总线周期至少由4个时钟周期组 成。每个时钟周期称T状态,用T1、T2、 T3和T4表示。
78
第3章
79
第3章
3.3.3 8086微处理器最小/最大工作方式
1.最小工作方式 8086的33引脚接+5V,系统处于最小工作方式。 系统中只有8086一个微处理器。 2.最大工作方式 把8086的33引脚接地,系统处于最大工作方式。 包含有两个或多个微处理器。其中有一个主处理器8086,其他处理器称协处理器。
4
第1章
发展经历了6代: 第一代:4位和8 位低档微处理器 第二代:8位中高档微处理器 第三代:16位微处理器 第四代:32位微处理器 第五代:32位高档微处理器 第六代:64位微处理器
5
第1章
1.1.3 微型计算机的应用 1. 科学计算 2. 数据处理 3. 计算机辅助技术 4. 过程检测与控制 5. 人工智能 6. 计算机网络应用
14
15
第1章
1.4.2 微型计算机的常用软件 ——计算机软件包括系统运行所需的各 种程序、数据、文件有关资料,分系统软 件和应用软件。 系统软件支持应用软件的开发与运行, 如操作系统和程序设计语言。 应用软件为用户解决某种应用问题。 软件系统组成结构如图1-9所示。
16
第1章
17
第1章
1.4.3 软硬件之间的相互关系 1. 硬件和软件相互依存 2. 硬件和软件无严格界线 3. 硬件和软件协同发展 4. 固件 5. 软件的兼容性
52
第2章
本章内容结束
谢 谢!
53
第3章
典型微处理器及其体系结构

微机原理及应用(第五版)PPT课件

微机原理及应用(第五版)PPT课件
压缩BCD码占80位,即10个字节.能存储20位 BCD数,但在80387中只用了18位BCD数.余下 1个字节的最高位为符号位.其余7位不用.
7位不用
最高位是符号位
2021
微机原理及应26用
1.2.3 实型数
任何一个二进制数可以表示成: N=+Y×2J 称为浮点表示法
80387规定: 指数采用移码表示。短型实数阶码占8位;长型实数
• 80386对字符串的操作有:移动;传送; 比较;查找等.
• 分类:字节串;字串;双字串.
2021
微机原理及应22用
1.1.5 位及位串
• 80x86CPU都支持位操作.80386/80486有位串操 作.位串最长是232个位.
• 位偏移量:一个位在位串中的地址.由字节地址 和位余数组成.
设位串是从m地址开始存储的,位偏移量分别为23 和-18的位在什么地方?

11110010B
左移一位 11100100B
右移一位 11111001B
[-14]补 [-28]补 [-7]补
2021
微机原理及应19用
3).反码表示的负数
左移和右移空位全补1.

11110001B
左移一位 11100011B
右移一位 11111000B
7.有关0的问题
[-14]补 [-28]补 [-7]补
• 二进制:数的后面加后缀B. • 十进制:数的后面加后缀D或不加. • 十六进制:数的后面加后缀H.
2021
微机原理及应5用
1.1.3 整数
1.无符号数
8、16、32位全部用来表示数值本身。
最低位LSB是0位,最高位MSB是7、15、31。
2.带符号整数

微机原理实验代码打印

微机原理实验代码打印

1)从键盘输入一个2位无符号的16进制数(00H~FFH),然后在显示器上同时以二进制和十进制形式显示出来。

例如: Please input N(00H-FFH): 9BN = 9BH = 10011011B = 155stck segment stack 'stack'dw 32 dup(0)stck endsdata segmentENDL DB 0DH,0AH,'$' ;回车换行IBUF_HEX DB 3,0,3 DUP(0)OBUF_BIN DB 10 DUP('$')OBUF_BCD DB 4 DUP('$')STR_IN_HEX DB 'Please input N (00H~FFH):$'STR_OUT1 DB 'N = $'STR_OUT2 DB ' = $'data endscode segmentmain proc farassume ss:stck, cs:code, ds:datapush dsxor ax,axpush ax ;保存psp地址mov ax,datamov ds,axMOV DX,OFFSET STR_IN_HEX ;提示用户输入十六进制数,如9BMOV AH,9INT 21HMOV DX,OFFSET IBUF_HEX ;接收输入的十六进制数MOV AH,10INT 21HMOV DX,OFFSET ENDLMOV AH,9INT 21H ;回车换行MOV DX,OFFSET STR_OUT1 ;输出'N = 'MOV AH,9INT 21HMOV SI,OFFSET IBUF_HEX+2MOV CL,IBUF_HEX+1MOV CH,0PUSH SIADD SI,CXMOV BYTE PTR [SI],'$'POP SIMOV DX,SI ;输出输入的十六进制数,如9BHMOV AH,9INT 21HMOV DL,'H'MOV AH,2INT 21HMOV DX,OFFSET STR_OUT2 ;输出' = 'MOV AH,9INT 21HCALL hex2bin; 调用子函数,将输入的十六进制数转为二进制值PUSH AX ;AL压栈,留给指令CALL bcdout使用CALL binout ;把AL二进制值按二进制格式输出MOV DX,OFFSET STR_OUT2 ;输出' = 'MOV AH,9INT 21HPOP AXCALL bcdout ;把AL二进制值按十进制格式输出MOV DX,OFFSET ENDLMOV AH,9INT 21H ;回车换行retmain endp;十六进制数--->二进制数如: 输入:FF 处理:AL=FFHhex2bin procMOV CL,IBUF_HEX+1 ;保存输入字符个数MOV CH,0MOV SI,OFFSET IBUF_HEX+2MOV AX,0hex2bin_AGAIN:MOV DL,16 ;乘数为16MUL DL 乘积保存在AX中MOV BL,[SI]CMP BL,'A'JB hex2bin_SMALLERSUB BL,07Hhex2bin_SMALLER:SUB BL,30HADD AL,BLINC SILOOP hex2bin_AGAINrethex2bin endp;二进制数--->二进制格式输出如: AL=FFH 输出:11111111Bbinout procMOV BYTE PTR OBUF_BIN+8,'B'MOV DI,OFFSET OBUF_BINMOV AH,0MOV CX,8 ;设置LOOP循环次数binout_NEXT:MOV DL,0SHL AL,1ADC DL,30H ;将每一位转为ASCII码MOV [DI],DL ;保存转换后的ASCII码INC DILOOP binout_NEXT ;cx值为8,循环8次MOV DX,OFFSET OBUF_BIN ;输出处理结果MOV AH,9INT 21Hret ;返回调用binout endp;二进制数--->十进制数输出如: AL=0AH 输出:10bcdout procMOV DI,OFFSET OBUF_BCD+2MOV AH,0MOV CX,10bcdout_AGAIN:MOV DX,0 ;无符号数16位扩展为32位DIV CX ;余数DX,商AXADD DL,30HMOV [DI],DLDEC DIOR AX,AXJNE bcdout_AGAININC DIMOV DX,DI ;输出处理结果MOV AH,9INT 21Hretbcdout endpcode endsend main ;程序主函数入口2)将输入的十进制数0-255,实际数值保存在bl中,输出如下格式如:Please input N(0-255):180N = 180 = B4H = 10110100Bstck segment stack 'stack'dw 32 dup(0)stck endsdata segmentENDL DB 0DH,0AH,'$' ;回车换行STR_IN_BCD DB 'Please input N(0-255):$'STR_OUT1 DB 'N = $'STR_OUT2 DB ' = $'IBUF_BCD DB 4,0,4 DUP(0)OBUF_BIN DB 10 DUP('$')OBUF_HEX DB 4 DUP('$')data endscode segmentmain proc farassume ss:stck, cs:code, ds:datapush dsxor ax,axpush ax ;保存psp地址mov ax,datamov ds,axMOV DX,OFFSET STR_IN_BCDMOV AH,9INT 21H ;提示用户输入十进制数,如180MOV DX,OFFSET IBUF_BCDMOV AH,10INT 21H ;接收输入的十进制数MOV DX,OFFSET ENDLMOV AH,9INT 21H ;回车换行MOV DX,OFFSET STR_OUT1 ;输出'N = 'MOV AH,9INT 21HMOV CL,IBUF_BCD+1 ;保存字符个数MOV CH,0MOV SI,OFFSET IBUF_BCD+2 ;保存输入串首地址PUSH SIADD SI,CXMOV BYTE PTR [SI],'$'POP SIMOV DX,SI ;输出输入的十进制数MOV AH,9INT 21HMOV DX,OFFSET STR_OUT2 ;输出' = 'MOV AH,9INT 21HCALL bcd2binPUSH AXCALL hexoutMOV DX,OFFSET STR_OUT2 ;输出' = 'MOV AH,9INT 21HPOP AXCALL binoutMOV DX,OFFSET ENDL ;回车换行MOV AH,9INT 21Hret ;返回调用main endp十进制数--->二进制数如: 输入:10 处理:AL=0AHbcd2bin procMOV CL,IBUF_BCD+1 ;保存输入字符个数MOV CH,0MOV SI,OFFSET IBUF_BCD+2MOV AX,0bcd2bin_AGAIN:MOV DL,10 ;乘数为10MUL DL ;乘积保存在AX中MOV BL,[SI]SUB BL,30HADD AL,BLINC SILOOP bcd2bin_AGAINretbcd2bin endp二进制数--->二进制格式输出如: AL=FFH 输出:11111111Bbinout procMOV BYTE PTR OBUF_BIN+8,'B'MOV DI,OFFSET OBUF_BINMOV AH,0MOV CX,8 ;设置LOOP循环次数binout_NEXT:MOV DL,0SHL AL,1ADC DL,30H ;将每一位转为ASCII码MOV [DI],DL ;保存转换后的ASCII码INC DILOOP binout_NEXT ;cx值为8,循环8次MOV DX,OFFSET OBUF_BIN ;输出处理结果MOV AH,9INT 21Hret ;返回调用binout endp二进制数--->十六进制输出如: AL=FFH 输出:FFHhexout procMOV BYTE PTR OBUF_HEX+2,'H'MOV DI,OFFSET OBUF_HEX+1MOV AH,0MOV CX,16hexout_AGAIN:MOV DX,0 ;无符号数16位扩展为32位DIV CX ;余数DX,商AXCMP DL,10JB hexout_SMALLERADD DL,07Hhexout_SMALLER:ADD DL,30HMOV [DI],DLDEC DIOR AX,AXJNE hexout_AGAININC DIMOV DX,DI 输出处理结果MOV AH,9INT 21Hrethexout endpcode endsend main ;程序主函数入口3)输入一个十进制的个位数,求出这个数的平方值,显示其十进制结果,要求有如下提示信息。

(完整word版)微机原理完整实验报告+程序

(完整word版)微机原理完整实验报告+程序

实验题目8253定时/计数器实验 一、 实验目的与要求: 1. 学会8253芯片和微机接口原理和方法。

2. 掌握8253定时器/计数器的工作方式和编程原理。

二、 实验内容: 1、实验原理 本实验原理图如图 1所示,8253A 的A0、A1接系统地址总线 A0、A1,故8253A 本实验通道2 有四个端口地址,如端口地址表 1所示。

8253A 的片选地址为 48H~ 4FH 。

因此, 仪中的8253A 四个端口地址为 48H 、49H 、4AH 、4BH ,分别对应通道 0、通道1、 和控制字。

采用8253A 通道0,工作在方式3(方波发生器方式),输入时钟CLK0为 输出OUTO 要求为1KHZ 的方波,并要求用接在 GATE0引脚上的导线是接地("0" 甩空("1"电平)来观察GATE 对计数器的控制作用,用示波器观察输出波形。

2、实验线路连接 (1) 8253A 芯片的CLK0引出插孔连分频输出插孔 (2) 8253A 的 GATE0 接+5V 。

实验步骤 (1) 按图1连好实验线路(2) 运行实验程序 1. 按“调试”按钮2. 选“窗口” “进入示波器窗口” ,然后最小化3. 按“运行按钮”4.将模拟示波器窗口打开,选择“串行口 2”,再按 Ctrl + F2按钮即可看到波形 显示“ 8253-1 ”用示波器测量8253A 的OUT2输出插孔,方波输出,幅值0〜4V 三、实验代码: 1MHZ ,电平)或 3、 CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONT PORT EQU 00DFH DATA PORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMATCALL LEDDIS P MOV DX,TCONTRO1MHZ 。

8086微机原理打字练习程序

8086微机原理打字练习程序

1课程设计题目与要求设计题目:打字练习程序课程设计内容:设计一个在键盘上练习打字的程序。

先在屏幕上显示一段文字,用户按照它在键盘上输入,如果按错键则以红色显示并报警,正确的输入,则正常显示。

课程设计目的:熟悉和掌握有关键盘ASCⅡ码,中断及字符显示技术。

课程设计要求:自行编制报警中断和显示错字红色中断处理程序,为保存原中断向量。

程序运行时,通过条件调用自编的中断向量处理程序。

程序退出时,恢复中断向量。

屏幕上显示出提示信息和练习的字符段,按照字符段从键盘上输入字符即可,每输入完一行后能自动刷新练习的字符段按Esc键可退出程序。

2相关理论知识2.1扬声器驱动PC机上的大多数I/O都是由主板上的8255(或8255A)可编程外围接口芯片(PPI)管理,用PPI输出寄存器中的PB0和PB1来控制扬声器的驱动,而8253的通道2的输出端与扬声器相连,PB0连接通道2的CKL2,PB1和通道2的OUT2通过一与非门连接扬声器,在PB0与PB1都为高电平时,由8253产生的脉冲就进入扬声器产生声音。

2.2 相关指令1)无条件转移指令无条件转移指令必须指定转移的目标地址(或称为转向地址),将程序无条件地转移到目标地址,去执行从该地址开始的指令。

如“JMP 目标地址”2)条件转移指令条件指令是根据执行该指令前标志位的状态而决定是否发生的控制转移指令。

每条指令测试不同的标志位组合,看是否满足条件。

若不满足,则继续执行跟在条件转移指令后面的指令;若满足则将程序控制指令转移到改指令给出的目标地址,去执行那里开始的程序。

如用到的“JA 目标地址”用到的标志符:JC-------CF标志为1,则转移JNC-------CF标志为0,则转移JA-------高于/不低于等于转移JB-------低于/不高于等于转移JG-------大于/不小于等于转移3)循环控制指令在设计循环程序时,可用于控制指令来控制循环是否继续。

如loop指令,其指令格式“loop 目标地址”4)子程序调用和返回指令CALL指令:实现子程序(或过程)的调用。

微机原理第七个微机原理打字游戏课程设计程序带注释

微机原理第七个微机原理打字游戏课程设计程序带注释

; 用于输出菜单:在光标在 (op1,op2) 开始地地方输出字符串 op3ENDM ; 将左上角 (op1,op2) MACRO op1,op2,op3,op4MOV AH,06hMOV AL,00h MOV BH,07h MOV CH,op1 MOV CL,op2 MOV DH,op3 MOV DL,op4 INT 10hMOV AH,02hMOV BH,00h MOV DH,op1 MOV DL,op2 INT 10hENDM初始化游戏 , 用于设置游戏地边框 Init_game MACROop1,op2,op3,op4,op5,op6MOV CX,00h将光标设置在 行:DH,列:DLMOV DH,op1INT 10hMOV AH,0ah MOV AL,op3 MOV BH,00h MOV CX,01hINT 10h ;****************** POP CXMACRO op1,op2,op3MOV AH,02h MOV BH,00h MOV DH,op1MOV DL,op2 INT 10h MOV AH,09h LEA DX,op3 INT21hmenuPUSH CX 右下角 (op3,op4) 决定地矩形区域清除显示字符clear_screen ・*******************设置光标在 op1 行 ,op2 列・ **********************************・ ******************MOVop6:MOV MOVDL,op2AH,02hBH,00h在指定光标地位置输出字符 op3"jwmilzoeucgpravskntxhdyqfbiytpkwnxlsvxrmofzhgaebudjqnwimzoexrphysfqtvdcgljukda" speed DW30000Dletter_counter DB 0 present_position DB 0 data ENDS CODE SEGMENTASSUME CS:CODE , DS:data START:MOV AX,data MOVDS,AX;***************** 首先设置游戏地主边框 Init_game 00h,00h,0ah,DL,80d,L1 Init_game 24d,00d,0ah,DL,80d,L2 Init_game 00d,00d,0ah,DH,25d,L3 Init_game 00d,79d,0ah,DH,25d,L4clear_screen 01d,01d,23d,78d menu 05d,15d,ZK menu 07d,15d,mes1 menu 09d,15d,mes2 menu11d,15d,mes3 menu 13d,15d,mes4 menu 15d,15d,mes5 menu 17d,15d,mes6 MOV AH,02h MOV BH,00h MOVDH,22dINC CXINCop4 ;op4用来决疋输出增长地方向是列还是仃DH :仃CMPCX,op5JNEop6;*******************重复输出字符 op3,op5 次 ,ENDM;*********************************** 数据段 , 用于初始化游戏有关地数据data SEGMENTZK DB "WELCOME TO PLAY!$"mes1 DB "data: 2011/01/08$"mes2 DB "press Enter key to continue .. $"mes3 DB "when a letter is droping ,please hit it!$"mes4 DB "press space key to pause!$"mes5 DB "press ESC key to return main interface!$"mes6 DB "press letter 'E'to exit!$"lost DB "Game over!$"letter DBDL :列gobackto_di:ADD DI,WORD PTR present_position DEC DIMOV DL,present_position MOVAH,02hMOV DL,33d INT 10h ;************** 设置光标地位置MOV AH,01h;********************设定DOS 为键盘输入字符并回显功能INT 21h;********************判断输入地字符CMP AL,0dhJE speed3 ; 输入为 enter 键, 跳到游戏主程序CMP AL,45h JE L10; 输入为 E, 跳到退出 , 结束游戏 L10: JMPexitspeed3: clear_screen 01d,01d,23d,78d Init_game 23d,01d,01d,DL,78d,next5MOV AH,02hMOV BH,00h MOV DH,01d MOV DL,01dINT 10hMOV CX,00h LEA SI,lett ernextletter:MOV DL,[SI] MOV AH,02h INT 21h INC SI INC CX CMP CX,78d JE nextcycle JMP nextletter改正下落地址超过 78 列地地址from_front: SUBJMPpresent_position,78d gobackto_dinextcycle:LEADI,letter ;DIADD present_position,31d ;加上 31CMP present_position,78d则改正指向待下落字母地首地址将下落地字母地列数设置为在前一个下落字母基础上; 比较设置过地下落地址地列数是否超过78列, 若超过 ,JA from_front・ ********************用于将光标定位在待下落地字母 , 用于操作该字母・ *********************MOV BH,00h MOV DH,01d INT 10h・ ******************** 三层循环, 第一层用于判断是否下落了21 ;第二层和第三层结合构成延时次, 即一次下落是否完成, 控制每一行地下落速度MOV CX,00h nextrow:PUSHMOV CX,00h out_cycle:PUSHMOV CXCX CX,00hin_cycle:INC CXCMP CX,1000hJNE in_cyclePUSH DX・*******************JMOV AH,06hMOV DL,0ffhINT 21hPOP DX・ ******************* 设置DOS为键盘输入字符且不回显状态判断输入字符:ESC-- 进入主程序选择界面space-- 暂停下落地字符-- 消失CMP JEAL,1bh to_start1CMP JE CMP JE AL,' '・ ************ pauseAL,[DI]disappear延时程序, 用于控制下落过程中在每一行地延时时间时间=speed*10000 pass:POPINC CX CMPJE print; CXCX,speed ; 判断在一行地延时是否达到在该行延时时间达到且没有被击中3000 次(用于控制延时时间), 跳到print, 即该行输出空格, 下一行输出字母JMP out_cycle;・*******************实现,除非再次输入空格延时未达到, 重新开始用于响应空格地暂停程序:通过将, 否则循环检查DOS设置为按键输入且不回显状态pause:PUSH DXMOV AH,06hMOV DL,0ffhINT 21h POP DXCMP AL,' ' JNE pause JMP pass ・ ********************** 用于转接跳转到开始主程序to_start1: JMP start ・ ***********当上一行停留时间达到且没有被正确击中 , 将上一行输出空格 , 该行输出下落地字母 print: ・ *************MOV 将上一行输出空格AH,0ah MOV MOv MOv INT AL,' ' BH,00h CX,01h 10h 增加DH 地值,使光标指向该行 INC DH MOV AH,02h MOV BH,00hINT 10h************* 在该行 MOV AH,0ah MOV AL,[DI] MOV BH,00hMOV CX,01h INT 10h・*************・*************落地字母 POP INC CMP JE 用于确定下落次数是否达到 21 CX CX CX,21d print_next_letter; 次 , 即该字母下落是否完成 落次数达到 21 次, 字母下落完成 , 跳到下一个子程序 , 用 于补充下落地字母 JMP disappear: POP POP MOVMOVnextrow;************CXCX当下落过程中击中该字母 , 使其消失 , 即输出空格代替 MOV MOV INT AH,0ahAL,' 'BH,00h CX,01h 10hJMPhi tprint_next_letter:;************* 将下落到底且没有被击中地位置输出为空格MOV AH,0ah MOV AL,' ' MOV BH,00hMOV CX,01h INT 10hINC DH MOV AH,02h MOV BH,00h INT10h********* 在窗口底框上一次标识字母输出为空格 , 用于表示该列字母下降时未被击中 MOV AH,0ah MOV AL,' ' MOV BH,00h MOV CX,01h INT 10h INCletter_counter ;计算下落未被击中地次数CMP letter_counter,78d ; 下落地未被击中次数达到 78 次 , 返回主界面 , 重新来过 JE completehit:用于补充新字母 , 把光标设置下落字母地所在列地第一行MOV AH,02h MOV BH,00hMOV DH,01hMOV DL,present_position INT10h・**************JvLMOV ADD CMP JA DIsplay: AL,[DI]AL,7h AL,7ahconvey_letter; 判断新字母是否超出了 z 地范围 , 超出则改正MOV MOV MOV AH,0ah BH,00h CX,01h INT 10hJMP nextcycle convey_letter: SUB AL,7ah ADD AL,61h JMPDIsplay・ *****************将光标指向底层一排用于标识字母是否被击中地位置・ **************complete:menu11d,35d,lostMOV CX,00h ・******************* LOOP1:PUSH MOV LOOP2:INC CMP JNE POP INC CMP JNE JMP exit: MOV INTCODE ENDS END CX CX,00hCX CX,60000dLOOP2 CX CX CX,30000d LOOP1 START AH,4ch21h START。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

微机原理与程序设计

微机原理与程序设计

微机原理与程序设计微机原理与程序设计是计算机科学与技术专业的一门重要课程,它是培养学生计算机基础知识和编程实践能力的关键课程之一。

本文将介绍微机原理与程序设计的基本概念、主要内容和学习方法,帮助读者更好地理解和掌握这门课程。

一、微机原理微机原理是微机系统的基础理论,它主要研究微机硬件系统的组成、工作原理和设计方法。

微机系统由中央处理器(CPU)、存储器、输入输出设备和系统总线等组成,它们之间通过总线进行数据和信号的传输。

微机原理研究的重点包括微机的结构、指令系统、中断系统、时序控制和总线结构等内容。

1. 微机的结构微机的结构主要包括中央处理器(CPU)、存储器和输入输出设备。

中央处理器是微机的核心部件,它包括运算器、控制器和寄存器等。

存储器用于存储程序和数据,包括随机存储器(RAM)和只读存储器(ROM)等。

输入输出设备用于与外部设备进行数据的输入和输出。

2. 指令系统指令系统是微机硬件的基本功能之一,它定义了微机执行的基本操作和指令格式。

指令系统包括数据传输指令、算术逻辑指令、控制转移指令等,通过这些指令可以实现数据的读写、运算和控制等功能。

3. 中断系统中断是微机系统中的一种重要的事件处理机制,它可以使微机在执行程序的同时响应外部事件。

中断系统包括中断源、中断控制器和中断处理程序等,通过中断可以实现对外部事件的及时响应和处理。

4. 时序控制时序控制是微机系统中的重要环节,它用于控制微机硬件的时序和操作的顺序。

时序控制包括时钟信号的产生和分配、指令的执行周期和时序、总线的访问和时序等。

5. 总线结构总线是微机硬件系统中各个部件之间进行数据和信号传输的通道,它包括地址总线、数据总线和控制总线等。

总线结构的设计和实现直接影响着微机系统的性能和扩展性。

二、程序设计程序设计是微机原理的重要应用领域,它是指根据问题需求和算法设计程序,并通过编程语言实现。

程序设计的关键是理解问题需求、选择合适的算法和数据结构,并用编程语言将算法转化为可执行的程序。

微机原理8086汇编程序设计

微机原理8086汇编程序设计

03
MOV指令用于将源操作数复制 到目标操作数,ADD、SUB等 指令用于执行算术运算,CMP 指令用于比较两个操作数的大 小。
算术运算类指令
01
算术运算指令用于执行加法、减法、乘法和除法等算术运算。
02
指令包括ADD、SUB、MUL、DIV等。

03
ADD指令将两个操作数相加并将结果存储在目标操作数中, SUB指令从第一个操作数中减去第二个操作数,MUL指令将 两个操作数相乘并将结果存储在目标操作数中,DIV指令将第 一个操作数除以第二个操作数并将商存储在目标操作数中。
子程序设计的特点是能够提高程序的模块化程度,便于代码重用和维护。同时,子程序可以独立于主 程序进行测试和调试,提高了程序的可靠性。但是,子程序调用会增加程序的执行时间,需要注意优 化子程序的性能。
05 汇编语言与高级语言的接 口
C语言与汇编语言的混合编程
调用约定
在C语言中调用汇编代码时,需要遵循特定 的调用约定,如参数传递方式、寄存器使用 等。
嵌入汇编
在C语言中嵌入汇编代码,可以直接在C程序中编写 汇编指令,但需要注意语法和语义的正确性。
汇编模块
将汇编代码编写成独立的汇编模块,通过外 部函数调用的方式在C程序中使用。
汇编语言在嵌入式系统中的应用
实时性控制
01
汇编语言具有直接控制硬件的能力,适用于嵌入式系统中的实
时性控制,如中断处理、定时器控制等。
02
指令包括JMP、CALL、RET等。
03
JMP指令用于无条件跳转到指定的地址执行程序,CALL指令用于调用子程序并 将返回地址压入堆栈中,RET指令用于从子程序返回并恢复原来的执行流程。
串操作类指令

微机原理打印

微机原理打印

微机原理秘籍(王续版权,违者必究)1、若二进制数为010111.101,则该数的十进制为(B)A 2323.5B 23.625C 23.75 D23.51252、11000110为二进制补码,该数的真值为(D)A +198B -198C +58 D-583、01000110为二进制补码,该数的真值为(A)A +70B -70C +58 D-584、字符A的ASCII为41H,字符a的ASCII为(C)A 41HB 42HC 61HD 62H5、字符9的ASCII为(C)A 09HB 9C 39HD 99H6、8位二进制数的原码表值范围为(C)A 0~255B -128~+127C -127~+127D -128~+1287、8位二进制数的反码表值范围为(C)A 0~255B -128~+127C -127~+127D -128~+1288、8位二进制数的补码表值范围为(B)A 0~255B -128~+127C -127~+127D -128~+1289、8位二进制数的无符号数表值范围为(A)A 0~255B -128~+127C -127~+127D -128~+12810、电子计算机遵循“存储程序”的概念,最早推出它的是(B)A 巴贝奇B 冯.诺伊曼C 帕斯卡D 贝尔11、决定计算机主要性能的是(A)A 中央处理器B 整机功耗C 存储容量D 整机价格12、计算机中运算器的主要功能是(B)A 算术运算B 算术和逻辑运算C 逻辑运算D 定点和浮点运算13、MIPS用来描述计算机的运算速度,含义是(C)A 每秒处理百万个字符B 每分钟处理百万个字符C 每秒执行百万条指令D 每分钟执行白万条指令14、完整的计算机系统应包括(D)A 运算器、控制器、存储器B 主机和应用程序C 主机和外部设备D 硬件设备和软件系统15、计算机的软件系统由(B)组成。

A 操作系统和文件管理软件B 系统软件和应用软件C 操作系统和应用软件D 操作系统和系统软件16、计算机硬件主要由CPU、内存、I/O设备和(B)组成。

微机原理实验打印版

微机原理实验打印版

一 DICE-598K系统配置一实验目的1. 熟悉和了解DICE-598K实验系统的最小模式结构与配置,主要IC管脚连接方法。

2. 熟悉和了解DICE-598K 实验系统硬件的性能。

二实验内容1.实验系统的硬件结构及主要性能特点。

2. 实验学时数:2H三实验设备与工具DICE-598K 实验系统四实验方法和步骤(一)系统硬件结构DICE-598K 实验系统由8088控制单元、实验单元、电子实验演示装置、开关电源等部分组成。

8088控制单元由8088CPU、复杂可编程逻辑器件CPLD(iSPL1032及iSPL 1016)、监控EP1(27512)、内存RAM1,2和键盘显示电路组成。

实验单元采用一体化、分模块设计,结构合理清晰。

电子实验演示装置由单片机、USB接口和16个I/O扩展接口(IN0~15,OUT0~15)组成。

1. 采用主频为14.77MHZ的8088CPU为主CPU,并以最小工作方式构成系统。

2. 配有二片61C256静态RAM构成系统的64K基本内存,地址范围为00000H~0FFFFH,其中00000H~00FFFH监控占用。

另配一片W27C512(64K)EP1存放监控程序,地址范围F0000H~FFFFFH。

还配有一片W27C512 EP2存放实验程序,为实验系统独立运行时下载实验程序提供方便。

3. 自带键盘、显示器,能独立运行,为实验程序调试带来方便。

4. 配备Windows仿真调试软件,支持机器码、汇编、C等三种语言的开发和调试。

5. 提供标准RS232异步通讯口,以连接IBM-PC机。

6. 配有各种微机常用I/O接口芯片,定时/计数接口芯片8253、A/D转换接口芯片0809、D/A转换接口芯片0832、中断控制器8259、键盘显示接口8279、并行I/O接口芯片8255、通讯接口芯片8250、8251、485和DMA控制器8237等。

7. 配备键盘、数码显示、发光二极管显示、开关量、LED16×16、LCD128×64、温度压力、步进电机、直流电机、扬声器等输入输出设备。

微机原理电子版

微机原理电子版

第七章:1 中断控制器的功能就是在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端,当CPU响应中断并进入中断程序的处理程序后,中断控制器仍负责对外部中断请求的管理。

2 什么叫全嵌套方式?在全嵌套方式中,中断请求按优先级0-7进行处理,0级中断控制器的优先级最高。

3 什么叫特殊全嵌套方式?和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么也会给予响应,从而实现一种对同级中断请求的特殊嵌套。

4 什么叫优先自动循环方式?优先级自动循环方式一般用在系统中多个中断源优先级相等的场合,在这种方式下,优先级队列是在变化的,一个设备受到中断服务后,它的优先级自动降为最低且优先级队列规定为IR0 IR1....IRt5 什么叫优先特殊循环方式?优先级特殊循环方式和优先级自动循环方式相比,只有一点不同,就是在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。

6 什么叫普遍屏蔽方式?在普遍屏蔽方式中,8259A的每个中断请求输入端都可以通过对应屏蔽位的设置被屏蔽,从而使这个中断请求不能从8259A送到cpu。

7 什么叫结束中断处理?当中断处理程序为结束时,使当前中断处理服务寄存器的ISn位清零的动作就是中断结束处理。

8 什么叫特殊中断结束方式?特殊中断结束方式反映在程序中就是要发一条特殊中断结束命令,这个命令中指出了要消除当前中断服务寄存器中的哪个IS位9 什么叫边沿触发方式?什么叫电平触发方式?在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号。

如果用初始化命令字ICW对8259A设置为电平触发方式,那么8259A工作时,便把中断请求输入端出现的高电平作为中断请求信号。

10 中断查询方式是如何工作的?cpu执行的查询软件中必须有查询命令,才能实现查询功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

冒泡法排序并显示
.model small
.386 .data
array dw 0002h,00b8h,0016h,003ah,0015h ;定义数据字(也可为字节或双字)
count ($-array)/2 ;求数据个数(若为字节则为1,若为双字则为4)
flag db -1 ;(交换标志初值为-1) .code
.startup
mov di,count ;
lp1: cmp flag,0 ;判断数组是否有序je exit ;有序则排序结束
dec di ;无序
mov cx,di ;无序则置扫描比较次数
mov bx,0 ;置数组的偏移地址
mov flag,0 ;预置交换标志为0(有序)lp2: mov ax,array[bx] ;取一个数据给AX
cmp ax,array[bx+2] ;与下一个数据比较(若是字节+1,双子+4)
jge next1 ;前一个大则转移到NEXT
xchg ax,array[bx+2] ;否则交换数据
mov array[bx],ax
mov flag,-1 ;置交换标志为-1 next1: add bx,2 ;修改指针地址loop lp2 ;循环进行两两数据的比较
jmp lp1 ;内循环结束继续下一遍排序(直至排序完成)
exit: mov cx,count ; 置循环次数
mov bx,0 ;置数组的偏移地址again1: mov ax,array[bx] ;去一个数给AX push cx ;将CX压入堆栈
mov cx,4 ;字有4个16进制,故循环4次(字节2,双字4)
again2: rol ax,4 ;循环左移4位
push ax ;将AX压入堆栈
call htoasc ;调用子程序(ASCII码显示程序)
mov ah,2
mov dl,al
int 21h ;显示字符
pop ax ;AX出栈
loop again2 ;循环进行ASCII 码显示程序并依此显示出字符
mov dl,'h'
mov ah,2
int 21h ;显示字符“h"
mov dl,' '
mov ah,2
int 21h
pop cx ;CX出栈
add bx,2 ;修改指针地址,指向下一个数据
loop again1 ;内循环结束即显示完一个字符再继续显示下一个
htoasc proc ;子程序and al,0fh
or al,30h
cmp al,39h ;判断是0~9还是字母
jbe next2
add al,07h
next2: ret
htoasc endp
.exit
end
显示字符的ASCII码
.model small
.386
.data
msg db 'Welcome to SDUST',0
.code
.startup
mov esi,offset msg
again: mov al,[esi]
cmp al,0
je end
and al,0f0h
shr al,4
cmp al,0ah
jb next
add al,07h
next: add al,30h
mov ah,2
int 21h
inc esi
jmp again
.exit
end
.model small
.386
.data
msg db 'Welcome to SDUST',0 ;还可用'$'代替0
.code
.startup
mov esi offset msg
again: mov ebx [esi]
cmp ebx,0 ;若代替则用cmp byte ptr ebx,'$'
je done ;与0比较若等于则结束
mov ecx,2 ;loop指令累计循环2次next: rol ebx,4 ;ebx 循环左移4位
call htoasc ;调用字符显示程序
mov dl,eax
mov ah,2
int 21h ;显示一个字符
loop next;
mov dl,'H'
mov ah,2
int 21h ;显示H
mov dl,','
mov ah,2
int 21h ;显示,
inc esi ;esi 自增1 ,移到下一个字符
jmp again ;无条件转移到again htoasc proc ;子程序
mov eax,ebx
and eax,0fh ;取其低4位
or eax,30h ;最高位变为3
cmp eax,39 ;与39H比较判断是0~9,还是字母
jbe htoend
add eax,07h
htoend: ret ;子程序返回
htoasc endp ;过程结束
done:
.exit
end。

相关文档
最新文档