微机原理程序代码
微机原理大作业题目及程序代码
1、将AX寄存器中16位数分成4组,每组四位,然后把这四位数分
别放在AL、BL、CL和DL中。
code segment
assume cs:code
start: mov ax,1234h;测试数据
mov cl,4
mov dx,ax
and dl,0fh
and dh,0fh
mov bl,dh
mov bh,al
ror bh,cl
and bh,0fh
mov ch,bh
ror ah,cl
and ah,0fh
mov al,ah
mov cl,ch
mov ah,4ch
int 21h
code ends
end start
1、 试编写一程序,要求比较两个字符串STRING1和STRING2所
含字符是否相同,若相同则显示“MATCH”,若不相同则显示
“NOMATCH”。
DATA SEGMENT
STRING1 DB 'HELLO.'
C1 EQU $-STRING1
STRING2 DB 'HELLO!'
C2 EQU $-STRING2
S1 DB 'MATCH$'
S2 DB 'NOMATCH$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,C1
CMP SI,C2
JNZ N_M
MOV BX,0
L1: MOV AL,STRING1[BX]
CMP AL,STRING2[BX]
JNZ N_M
INC BX
DEC SI
JNZ L1
MOV DX,OFFSET S1
JMP EXIT
N_M: MOV DX,OFFSET S2
EXIT: MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N
次。
CODE SEGMENT
ASSUME CS:CODE
START: ;MOV DL,7
;MOV AH,2
;INT 21H
MOV AH,1
INT 21H
CMP AL,30H
JBE EXIT
CMP AL,39H
JA EXIT
SUB AL,30H
MOV CL,AL
L1: MOV DL,07H
MOV AH,2
INT 21H
MOV BX,1FFFH;延时
L3: MOV DX,0FFFFH
L2: DEC DX
JNZ L2
DEC BX
JNZ L3
DEC CL
JNZ L1
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
3、 编写程序,将一个包含有20个数据的数组M分成两个数组:
正数数组P和负数数组N,并分别把这两个数组中数据的个数显
示出来。
DATA SEGMENT
M DB 1,2,3,4,5,6,7,8,9,89,-1,-2
DB -3,-4,-5,-6,-7,-8,-9,0
P DB 20 DUP(?)
N DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,20
MOV SI,0
MOV DI,0
MOV BX,OFFSET M
L: MOV AL,[BX]
CMP AL,0
JGE POS
MOV N[DI],AL
INC DI
JMP L1
POS: JZ L1
MOV P[SI],AL
INC SI
L1: INC BX
LOOP L
MOV BX,SI
CALL DISP
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV BX,DI
CALL DISP
MOV AH,4CH
INT 21H
DISP PROC
MOV AX,BX
MOV CL,10
DIV CL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
RET
DISP ENDP
CODE ENDS
END START
4、 数据段中已定义了一个有n个字数据的数组M,试编写一程
序求出M中绝对值最大的数,把它放在数据段M+2n单元中,并
将该数的偏移地址存放在M+2(n+1)单元中。
DATA SEGMENT
M DW 1,2,3,-4,-55,-6,7,-8
COUNT EQU $-M
DW 2 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV DI,0
MOV CX,COUNT
SHR CX,1
MOV BX,0
L3: MOV AX,M[SI]
CMP AX,0
JGE L1
NEG AX
L1: CMP BX,AX
JG L2
XCHG BX,AX
MOV DI,SI
L2: INC SI
INC SI
LOOP L3
MOV AX,M[DI]
MOV M[COUNT],AX
MOV M[COUNT+2],DI
MOV AH,4CH
INT 21H
CODE ENDS
END START
微机原理课程设计说明书(加热器)
1.课程设计任务书设计内容:设计当把物品放入加热器中,首先要启动加热器和电机工作,设定加热时间为3(5)分钟,为使物品均匀加热,每隔20(30)秒电机要反转一次,(正转→反转、反转→正转),加热时间到后,停止加热器和电机工作,并发声,告知加热结束。
设计目标:在规定的时间内设计出符合要求的汇编语言程序,并提交一份符合本科生毕业设计论文规范的报告。
进度安排:8月13日-8月16日-----------------------确定设计内容并完成硬件部分8月17日-8月21日------------------------------------完成程序清单8月22日-8月23日------------------------------完成课程设计说明书2. 总体设计思路2.1、分析设计所用到的芯片的原理及使用方法:⑴8259A的使用方法:8259A有四个初始化命令字ICW及3个操作操作命令字OCW。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图2-1所示,OCW1-OCW3各命令字格式如图2-2所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的8操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图2-1ICW1-ICW4各命令字格式如图2-2OCW1-OCW3各命令字格式如图⑵8255的使用方法:方式0 —基本输入/出方式;方式1 —选通输入/出方式;方式2 —双向选通工作方式。
图2-3 8255命令字格式图⑶8253的使用方法:(1) 方式0:计数到0结束输出正跃变信号方式。
(2) 方式1:硬件可重触发单稳方式。
(3) 方式2:频率发生器方式。
(4) 方式3:方波发生器。
(5) 方式4:软件触发选通方式。
微机原理emu8086课程设计
目录一、软件启动 (1)二、程序代码 (2)1、数值计算 (2)(1)十进制系统 (2)2、逻辑运算 (5)(1)与运算(AND) (5)(2)或运算(OR) (5)(3)异或运算(XOR) (5)4、宏 (8)三、鸣谢 (10)Emu8086的应用分析摘要:Emu8086是一个可在Windows 环境下运行的8086CPU汇编仿真软件。
它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南,这对刚开始学习汇编语言的人是一个很有用的工具。
您可以在真器中单步或连续执行程序,其可视化的工作环境让使用者操作更容易。
您可以在程序执行中动态观察各寄存器、标记位以及存储器中的变化情况。
仿真器会在模拟的PC中执行程序,以避免程序运行时到实际的硬盘或内存中存取数据。
此外,该软件完全兼容Intel新一代处理器,包括了PentiumⅢ、Pentium4的指令。
关键词:Emu8086 微机原理程序文件一、软件启动双击进入启动界面如图1所示,用户可以选择新建文本、程序示例、快速启动指南、最近使用文档。
图1 启动界面Emu8086软件提供的实例中包含了几十种典型的程序代码,其中包括:数值计算、逻辑运算、屏幕显示、键盘输入、文件打印、马达控制、温度控制、交通灯控制等。
在软件提供的快速指南中提供了多种在线帮助工具,包括:文件索引、8086CUP指令使用指南、系统中断调用列表以及用法等。
用户可以通过该工具快速地掌握8086CPU指令体系和emu8086汇编真软件的使用。
程序编辑结束后,点击模拟,即可进入模拟状态:点击运行之后即可用屏幕模拟器进行模拟,如:二、程序代码1、数值计算(1)十进制系统目前使用最多的是十进制。
十进制系统有10个数字0,1,2,3,4,5,6,7,8,9。
利用这些数字能表示任何数值,例如754这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。
微机原理及应用试卷编程题
一.编程题 (共43题,430分)1.1 [库中题号:060030] 10分编写完整的8086汇编程序:将字符缓冲区A的字符'1234567890'倒序存放到缓冲区B中。
1.2 [库中题号:060029] 10分编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。
加密表为;输入数字: 0,1,2,3,4,5,6,7,8,9密码数字: 7,5,9,1,3,6,8,0,2,41.3 [库中题号:060028] 10分试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束。
两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。
1.4 [库中题号:060027] 10分把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。
另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。
试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1)。
1.5 [库中题号:060026] 10分已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变。
1.6 [库中题号:060025] 10分试编写完整的程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:(1)如果3个数都不相等则显示0;(2)如果3个数中有2个数相等则显示2;(3)如果3个数都相等则显示3。
08级微机原理6_汇编语言程序设计基础
汇编程序框架例程
;程序说明注释 st_seg segment stack ;定义堆栈段 db 20 dup (‘stack’) ;定义堆栈数据区 段 st_seg ends ;堆栈段结束 名 datarea segment ;定义数据段 段属性 : ;数据定义 datarea ends ;数据段结束 program segment 过 main proc far ;主程序声明 程 assume cs:program,ds:datarea,ss:st_seg 名 start: ;主程序入口地址 push ds ;返回操作系统的段基址入栈 标号 sub ax,ax ; 设置返 push ax ;0000H入栈 回堆栈
字符串定义
NOTES DB ‘The result is :’,’$’ 字符串结束符 ’00H’
PTR的作用:MOV AX, WORD PTR FIRST
6.2.3 标号
标号是一条指令语句的符号地址。在汇编源程序中, 只有在需要转向一条指令语句时,才为该指令语句设 置标号,以便在转移类指令(含子程序调用指令)中 直接引用这个标号。因此,标号可作为转移类指令的 操作数,即转移地址。 【例6.1】符号地址表示。 ┆ NEXT:MOV AL, [SI] ;带标号NEXT的指令 ┆ DEC CX JNE NEXT ;标号NEXT作转移指 令的操作数
【例6.4】用算术运算符进行数值表达式运算。 ┆ NUM1 EQU 25*4 –50 ;NUM1=50 NUM2 EQU NUM1 / 7 ;NUM2=7 NUM3 DB NUM1 MOD 7 ;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB ‘12345’ NUM4 EQU VAR2-VAR1 ;NUM4=5 NUM5 EQU 0FH ┆ MOV AL,NUM5 SHL 4 ;(AL)=11110000B MOV BL,NUM5 SHR 4; (BL)=00000000B ┆
微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址
微机原理与应用第六章
数组字<AX? N 内容交换 修改数组指针 N 到100字?
YRT: MOV MOV MOV MOV MOV NEXT1: CMP
AX,2000H DS,AX BX,0042H AX,0 CX,100 AX,[BX]
循环次数已知 (计数控制)
JA
MOV NEXT: INC
NEXT
MAX PROC NEAR PUSHF PUSH AX PUSH CX PUSH SI
STAR:MOV BX,2000H MOV AL,5 MOV AH,0 [BX+AL] XLAT HLT ADD BX,AX
MOV AL,[BX] 执行后:AL=19H
复习换码指令
…… 64H 51H 40H 31H 24H 19H 10H 09H 04H 01H 00H
⑴ 段内直接调用与返回
格式:CALL 过程名 功能:调用当前段内的子程序 操作:SP←SP-2,[SP]←IP,IP←IP+disp 格式:RET 操作:IP ←[SP],SP← SP+2 16位通用寄存器或 ⑵ 段内间接调用与返回 字存储器 格式:CALL OPRD 操作:SP←SP-2,[SP]←IP,IP←(OPRD) 格式: RET 操作:IP ←[SP],SP← SP+2
子 程 序 段
子 程 序 段
subr1 proc near ...... ret subr1 endp main endp code ends
主 程 序 段
code ends
例:
MY SEGMENT ASSUME CS:MY MAIN PROC FAR START: PUSH DS SUB AX,AX PUSH AX MOV CL,04 CALL DP5 MOV BL,CL CALL DP5 ADD AL,BL RET MAIN ENDP DP5 PROC MOV SAL SAL ADD MOV NEAR AL,CL AL,1 AL,1 AL,CL CL,AL
(微机原理及应用)编程题_试题集
重庆科技学院试题库系统试题库导出试题微机原理及应用-编程题(43题)题序:0017题型:06难度:01分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAX DW 0148HDW 2316HDA TAY DW 0237HDW 4052H试编写一个程序段,实现将DATAX和DA TAY两个字数据相乘(用MUL)。
答案:解:(1) MOV AX, DATAXMUL DATAYMOV DATAY,AXMOV DATAY+2,DX题序:0018题型:06难度:02分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAX DW 0148HDW 2316HDA TAY DW 0237HDW 4052H试编写一个程序段,实现将DATAX除以23(用DIV)。
答案:解:(1) MOV AX, DATAXMOV BL, 23DIV BLMOV BL,AHMOV AH, 0MOV DATAY, AX ;存放商MOV AL,BLMOV DATAY+2, DX ;存放余数题序:0002题型:06难度:03分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:试编写一个程序段,实现将BX中的数除以10,结果仍放在BX中。
答案:解: MOV CL,0AHMOV AX,BXDIV CLMOV BX,AX题序:0016题型:06难度:03分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAX DW 0148HDW 2316HDA TAY DW 0237HDW 4052H试编写一个程序段,实现将DATAX和DA TAY中的两个双字数据相加, 和存放在DA TAY和答案:解:(1) MOV AX, DATAXADD AX, DATAYMOV BX, DATAX+2ADD BX, DATAY+2MOV DATAY, AXMOV DATAY+2, BX题序:0020题型:06难度:03分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。
微机原理与单片机接口技术(第2版)李精华 第4章 单片机C51语言程序设计
4.2.3 数据类型
数据类型
类型名称
长位度/
bit sbit sfr sfr16
位类型
1
可寻址位型
1
特殊功能寄存器型
8
16位特殊功能寄存器型
16
取值范围
0,1 0,1 0~255 0~65536
4.2.3 数据类型
1.字符型char
字符型char包括无符号字符型unsigned char和带符号字符型signed
double,float占4字节存储容量,double占8字节存储容 量。浮点型数据可以直接表示小数,因此许多复杂的数 学表达式都采用浮点型数据。51单片机使用浮点型数据 进行运算时消耗资源较大,运行速度也慢,因而在实时 性要求非常高的程序中不做浮点型数据的运算。
4.2.3 数据类型
5.位类型bit
4.2.2 关键字
又称保留字,是程序设计语言中规定的、有固定含义 的单词符号。(32个)
auto break case
Байду номын сангаас
char const continue default do
微机原理实验指导书
实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
汇编语言上机指导及例示(川大微机原理实验资料和内容以及MASM使用方法)
汇编语言上机指导及例示、习题从如何建立源文件到进行调试作下简要的介绍,并配例题说明。
由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出汇编语言上机过程:一、上机前的软件准备:MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)文本编辑器(如: , TURBO.EXE , TC.EXE , C.EXE 等)汇编程序(如:MASM.EXE , ASM.EXE 等)连接程序(如:LINK.EXE 等)调试程序(如:DEBUG.EXE 等)二、汇编程序建立过程:a.建立汇编源程序─通过───→b.编译为目标文件─↓┬─→d.连接为可执行文件↑│ c.不通过,重新修改(语句错误)↓├──────────────────────┘↓↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓└────────────────────────────←e运行↓正确g.完成三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明PROCEDURE a:建立汇编源程序(即:建立文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
