微机原理数据块传送源程序

合集下载

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

1. 通用数据传送指令MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)。

微机原理第五章 程序设计-dsh

微机原理第五章 程序设计-dsh

INT
COSEG
21H
ENDS END START
第三节 分支程序
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由 CS和 IP决定的,当程序 的转移仅在同一段内进行时,只需修改偏移地址 IP的 值;如果程序的转移是在不同的段之间进行,则段基 址 CS和偏移地址 IP均需要修改。 转移指令分为无条件转移指令和条件转移指令。 在进行分支程序设计时,首先要根据处理的问题用比 较、测试的方式,或者用算术运算、逻辑运算使标志 寄存器产生相应的标志位,根据转移条件选择转移指 令。
INC INC DEC JNZ
BX BX CX LOP ; ;控制部分
修改部分
MOV YY,AX MOV AH,4CH INT CODE ENDS 21H
END
START
一.循环的基本结构
1.先执行,后判断结构
流程图如右:
入口
初始化部分
循环体
修改部分
N
循环 结束? Y 出口
例2. 编程统计数据块中正数的个数,
Y
RS END (DX)
DATA
SEGMENT
D1
COUNT RS DATA CODE
DB,-1,-3,5,7,-9,·,-6 · ·
EQU DW ENDS SEGMENT ASSUME CS:CODE,DS:DATA $-D1 ?
START:
MOV
AX,DATA
MOV
MOV MOV MOV
DS,AX
JMP JUS2
BIGD: JG JUS1 ;x>0转移 ;x=0
MOV AL, 0
JMP
JUS1: JUS2:
JUS2

微机原理与接口技术复习题1-5(答案)

微机原理与接口技术复习题1-5(答案)

复习题1:1、指出下列指令的错误(1)MOV AH,BX(2)MOV [BX],[SI](3)MOV AX,[SI] [DI](4)MOV MYDAT [BX] [SI],ES:AX(5)MOV BYTE PTR [BX],1000(6)MOV BX,OFFSET MYDAT[SI](7)MOV CS,AX(8)SAL AL, 5答案:(1)MOV AH,BX 源操作数与目的操作数长度不相同(2)MOV [BX],[SI] 这是两个内存单元在传递数据,而这在汇编语言中是不允许的。

不允许两内存单元同时作为源操作数和目的操作数进行运算(3)MOV AX,[SI] [DI] 不能用两个变址连用,其中一个应为基址BX或BP (4)MOV MYDAT [BX] [SI],ES:AX 同(2)(5)MOV BYTE PTR [BX],1000源操作数与目的操作数长度不相同,1000D=3E8H (6)MOV BX,OFFSET MYDAT [SI] OFFSET不能与复杂操作数相连(7)MOV CS,AX ,不能对CS赋值(8)MOV CL,5SAL AL,CL2、下面哪些指令是非法的?(假设OP1,OP2是已经用DB定义的变量)(1)CMP 15,BX(2)CMP OP1,25(3)CMP OP1,OP2(4)CMP AX,OP1答案(1)非法(2)合法(3)非法(4)非法3、假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?(1)MOV BP,AL(2)MOV WORD_OP [BX+4*3] [DI],SP(3)MOV WORD_OP1, WORD_OP2(4)MOV AX, WORD_OP1 [DX](5)MOV SAVE_WORD, DS(6)MOV SP, SS:DATA_WORD [BX] [SI](7)MOV AX, [WORD_OP1+WORD_OP2](8)MOV AX, [WORD_OP1-WORD_OP2+100](9)MOV [WORD_OP1], [WORD_OP1-WORD_OP2]答案:(1)非法,操作数类型不同。

华电保定微机原理汇编实验

华电保定微机原理汇编实验

实验一、数据块传送1.将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

源程序:DATAS SEGMENT;此处输入数据段代码ORG 2000HDATA1 DB 1,2,3,4,5,6,7,8,9,10ORG 3000HDATA2 DB 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,2000HMOV DI,3000HMOV CX,10 NEXT:MOV AL,[SI]MOV [DI],ALINC SIINC DIDEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START运行结果:2.将数据段中2000H单元开始存放的10个数(16位数)传送到3000H开始的10个字中。

源程序:DATAS SEGMENT;此处输入数据段代码ORG 2000HDATA1 DW 1,2,3,4,5,6,7,8,9,10ORG 3000HDATA2 DW 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,2000HMOV DI,3000HMOV CX,10NEXT:MOV AX,[SI]MOV [DI],AXADD SI,2ADD DI,2DEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START运行后:3.将数据DATA1中的10个字节数据传送到数据段DATA2中源数据:DATAS SEGMENT;此处输入数据段代码DATA1 DB 1,2,3,4,5,6,7,8,9,10ORG 1000HDATA2 DB 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA SI,DATA1LEA DI,DATA2MOV CX,10NEXT:MOV AL,[SI]MOV [DI],ALINC SIINC DIDEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START初始值:运行后:4.将数据段中2000H开始的20个数据传送到2010H开始的20个单元中。

(微机原理与接口技术)chapter04数据传送指令

(微机原理与接口技术)chapter04数据传送指令

MOV DL, [DI]
23
操作码
DW
10001010
操作码= MOV D= 传送到寄存器 (REG) W= 字节 MOD= 无位移量 REG= DL R/M= DS:[DI]
MOD
REG
R/M
00010101
MOV DL, [DI] 指令的机器语言形式
24
例5
如果指令变成MOV DL, [DI+1],MOD 字段变成01, 构成8位的位移量
如果MOD =11,它选择寄存器寻址模式。寄存器寻 址用R/M字段指定一个寄存器而不是存储单元
如果MOD字段内容是00, 01或10, R/M字段选择数 据存储器寻址方式之一
MOD =00, 没有位移量 MOD =01, 8位符号扩展的位移量 MOD =10, 16位移量 (8086-80286)或32位移量
(+1000H) 8位的位移量是00H-7FH(正的),扩展成为16位的
0000-007FH 。8位的位移量是80H-FFH(负的) ,扩 展成为16位的FF80-FFFFH
15
寄存器分配
REG 和 R/M 的分配 (当 MOD= 11)
代码 000 001 010 011 100 101 110 111
17
操作码
DW
10001011
MOD
REG
R/M
11101100
操作码= MOV D= 传送到寄存器(REG) W= 字 MOD= R/M 是个寄存器 REG= BP R/M= SP
把 8BEC 指令放入第一字节和第二字节,指令的符号形式是 MOV BP, SP
18
例3
3字节指令668BE8H
初始化堆栈时,应当加载堆栈段寄存器和堆栈指针 寄存器

北航微机原理实验(源程序)-教师手册

北航微机原理实验(源程序)-教师手册

目录第一章:汇编基础与硬件基础 (2)实验二TPC2300A集成开发环境 (2)内容1.2.2 分段存储结构和数据变量的定义 (2)内容1.2.3 汇编程序设计---数据串操作 (3)内容1.2.4 汇编程序设计--循环和分支程序 (3)内容1.2.5 汇编程序设计---子程序及其调用 (4)内容1.2.6 汇编程序设计--DOS中断调用 (5)实验三TPC-2003A接口箱系统硬件及逻辑电路 (6)内容1.3.2 I/O译码电路 (6)第二章基础实验 (7)实验一8253接口芯片基础 (7)内容2.1.1 8253用于手动脉冲计 (7)内容2.1.2 8253用于分频 (8)实验二8255接口芯片基础 (9)内容2.2.1 8255作为基本输入输出 (9)内容2.2.2 8255方式0的应用-红绿灯控制 (9)内容2.2.3 8255对8253GATE的控制 (11)内容2.2.4: 手动脉冲计数输出显示 (13)第三章综合实验 (14)实验一AD/DA接口芯片基础 (14)内容3.1.1:ADC0809的数据采集功能 (14)内容3.1.2:DAC0832的波形输出功能 (15)实验一8253/8255综合实验 (16)内容3.2.1: 继电器控制 (16)内容3.2.2: 自动计数输出显示 (18)内容3.2.3 直流电机转速显示与计算 (19)实验三8253/8255/DAC0832综合实验 (23)内容3.3.1:直流电机转速控制 (23)内容3.3.2:直流电机测速 (25)实验四8255综合实验 (28)内容3.4.1:步进电机控制 (28)第一章:汇编基础与硬件基础;* *;实验二 TPC2300A集成开发环境;* *;内容1.2.2 分段存储结构和数据变量的定义;******************************************;;* *;;* 编写程序统计字符串str的字符个数, *;;*存于counts单元。

《微机原理与应用》第12章DMA接口

《微机原理与应用》第12章DMA接口
实时数据采集与处理
DMA接口可满足音视频处理中对实时数据采集和处理的需求。
高质量音视频输出
通过DMA传输,可实现高质量的音视频输出,提升用户体验。
多通道数据传输
DMA支持多通道数据传输,适用于音视频处理中多路信号同时 处理的情况。
在大规模数据存储中优化性能
高速数据存储
DMA接口可实现大规模数据的快速存储,提高存 储系统性能。
06 应用案例分析
在嵌入式系统中应用DMA接口
数据采集与传输
DMA接口可实现嵌入式 系统中高速、连续的数 据采集与传输,减轻 CPU负担。
实时性控制
DMA传输方式可确保嵌 入式系统对实时性要求 较高的任务得到及时处 理。
系统资源优化
通过DMA接口,可优化 嵌入式系统的内存、IO 等资源分配,提高系统 整体性能。
减少CPU干预策略
利用DMA控制器的自主传输能力
DMA控制器可以独立地完成数据传输任务,无需CPU的干 预,从而释放CPU资源。
采用周期窃取技术
在CPU空闲时,利用DMA控制器窃取CPU的一个或多个周 期进行数据传输,以减少对CPU的占用。
优化中断处理
合理设置DMA传输完成后的中断优先级和处理程序,以减 少中断对CPU的影响。
为了通知CPU数据传输已 经完成,DMA控制器会产 生一个中断信号,触发 CPU的中断处理程序。
结束处理
CPU在接收到中断信号后, 会执行相应的中断处理程 序,完成DMA传输的结束 处理。
异常和错误处理机制
异常检测
DMA控制器在数据传输过程中会检测各种异常情况,如地址越界、数据错误等。
错误处理
一旦发现异常情况,DMA控制器会立即停止数据传输,并产生相应的错误信号,通知 CPU进行错误处理。

微机原理与接口技术:汇编语言源程序简介

微机原理与接口技术:汇编语言源程序简介
知识点4.1
汇编语言源程序
1
4.1 汇编语言源程序
用汇编语言编写的程序称为汇编语言源程序。汇编语言源程序结构如下:
2
数据段名 SEGMENT ……
数据段名 ENDS 附加数据段名 SEGMENT
…… 附加数据段名 ENDS 堆栈段名 SEGMENT
…… 堆栈段名 ENDS 代码段名 SEGMENT
7
汇编语言源程序的结构
汇编语言源程序结构取决于汇编程序,不同的汇编程序要求的源程序结构不同。 MASM允许我们以两种方式编程,一种是使用一种特定的汇编程序模型来编程, 另一种是给出完整的段定义的方式进行编程。
8
汇编语言的语句格式
汇编语言源程序中一行只能写一个语句。每个语句可以有4部分:标号、操作码 助记符、操作数助记符、注释。 例如: BEGAIN: MOV AX, BX ;BX数据传送给AX
REP MOVSB
MOV AH, 4CH
INT 21H
CODE ENDS
;代码段结束
END START
6
汇编语言源程序的结构
汇编语言源程序结构取决于汇编程序,汇编程序是将汇编语言源程序翻译成机 器语言的系统程序,不同的汇编程序要求的源程序结构不同。翻译的过程叫做 汇编assemble。 本章以Microsoft公司的MASM宏汇编程序为背景介绍汇编语言源程序设计。
DATA ENDS
;数据段结束
EDATA SEGMENT
;定义附加段
STRING2 DB 100 DUP(?)
EDATA ENDS
;附加段结束
STACK SEGMENT ‘stack’
;定义堆栈段
DW ห้องสมุดไป่ตู้56 DUP(?)

微机原理实验: 数据传送

微机原理实验:  数据传送

实验二数据传送一、实验目的1.熟悉8086指令系统的数据传送指令及8086的寻址方式。

2.利用Emulator仿真器来调试汇编语言程序。

二、实验预习要求1.复习8086指令系统中的数据传送类指令和8086的寻址方式。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务1.通过下述程序段的输入和执行来熟悉Emulator仿真器的使用,并通过显示器屏幕观察程序的执行情况。

练习程序段如下:MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV DS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。

压栈程序段如下:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。

(1) MOV [BX],[SI](2) MOV AH,BX(3) MOV AX,[SI][DI](4) MOV BYTE PTR[BX],2000H(5) MOV CS,AX(6) MOV DS,2000H4.①编写程序设置各寄存器及存储单元为如下内容:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH②根据①中设置说明下列各条指令执行完后AX寄存器中的内容,并上机验证。

(1) MOV AX,1200H(2) MOV AX,BX(3) MOV AX,[0120H](4) MOV AX,[BX](5) MOV AX,0110H[BX](6) MOV AX,[BX][SI](7) MOV AX,0110H[BX][SI]5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。

微机原理数据传送的实验

微机原理数据传送的实验

微机原理数据传送的实验数据传送是微机原理中非常重要的一部分,它是指在微机系统中将数据从一个地方传送到另一个地方的过程。

数据传送分为内部数据传送和外部数据传送两种。

内部数据传送主要是指在微机系统内部进行数据传送,常涉及到寄存器和存储器之间的数据传输。

寄存器是微机系统中用于暂时存放数据的地方,而存储器则是用于永久存储数据的地方。

在微机系统中,数据的传输主要是通过总线来实现的。

总线是连接CPU、存储器和输入输出设备的一种通信线路。

数据传输通过总线分为三个步骤:地址传输、数据传输和控制传输。

首先是地址传输。

CPU通过地址总线将要访问的存储单元的地址发送给存储器。

存储器接收到地址后,将对应地址的数据准备好待传输。

然后是数据传输。

CPU通过数据总线将数据发送给存储器。

存储器接收到数据后,将数据写入相应的存储单元。

或者CPU从存储器中读取数据,存储器将所需的数据通过数据总线发送给CPU。

最后是控制传输。

控制传输是控制数据传输的信号传输。

在数据传输过程中,控制信号包括读使能、写使能、读取信号和写入信号等。

读使能信号用于告诉存储器将数据写入总线,写使能信号用于告诉存储器从总线读取数据。

读取信号和写入信号是为了使数据传输的时序正确。

除了内部数据传送,微机系统还需要和外部设备进行数据传送。

外部设备包括键盘、显示器、鼠标等。

外部设备与微机系统的数据传输需要通过接口电路来实现。

接口电路是把外部设备的数据格式转换成微机系统可识别的数据格式的电路。

通过接口电路,外部设备的数据可以传送到微机系统中,或者由微机系统的数据传送到外部设备中。

在外部数据传输中,数据传输方式主要有并行传输和串行传输两种。

并行传输是指多位数据同时传输的方式,而串行传输则是指一位一位地进行数据传输。

总之,数据传送是微机系统中非常重要的一个环节,它涉及到内部数据传送和外部数据传送。

在内部数据传送过程中,需要通过总线来进行地址传输、数据传输和控制传输。

而外部数据传送则需要通过接口电路将外部设备的数据格式转换成微机系统可识别的数据格式。

微机原理与接口技术:数据传送指令

微机原理与接口技术:数据传送指令

3.3.1 数据传送指令数据传送指令是汇编语言中使用最频繁的指令,通常细分为通用数据传送指令、端口输入输出指令、地址传送指令和标志寄存器传送指令。

1. 通用数据传送指令MOV,PUSH,POP,XCHG,XLAT(1)MOV指令格式:MOV dst, src功能:数据传送,把src的内容传送到dst中。

说明:把源操作数复制到目的操作数中,它可以实现:①立即数到通用寄存器的数据传送例如:MOV AL, 4 ;AL=4MOV AX, 1000H ;AX=1000HMOV SI, 037BH ;SI=037BH但是:MOV DS, 2000H ;语法错误,不能用立即数给段寄存器赋值。

应该为:MOV AX, 2000MOV DS, AX②立即数到存储单元的数据传送例如:MOV WORD PTR[DI], 2000H将立即数2000H传送到内存单元,内存单元的地址以间接寻址的方式由DI提供。

设DS=3000H,DI=1500H,目的操作数的物理首地址为31500H,指令执行后如图3-5所示。

PTR是属性运算符,功能为修改操作数的类型。

WORD PTR的作用是将操作数的类型设置为字类型,BYTE PTR将操作数的类型设置为字节类型。

例如:MOV BYTE PTR[SI], 4AH将立即数4AH传送到内存单元,内存单元的地址以间接寻址的方式由SI提供,传送一个字节。

MOV [DI], 04AH ;语法错误:源和目的操作数的类型都不确定。

这条指令不可用,因为源和目的操作数的类型都不确定,指令执行结果也不确定,这种情况称为二异性。

指令执行时可能传送一个字节,将立即数4AH传送给[DI]指明的内存单元,也可能传送两个字节,4A赋给内存单元[DI],0赋给[DI+1]。

MOV指令中的两个操作数的类型必须至少有一个是确定的,另一个依附这一个。

属性运算符PTR帮助我们确定存储器操作数的类型。

③CPU内部寄存器之间的数据传送例如:MOV AL, BL ;BL传送给AL,传送一个字节。

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告主题:数据传送一、实验目的熟悉星研集成环境软件的使用方法。

熟悉Borland公司的TASM编译器熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容1、熟悉星研集成环境软件。

2、编写程序,实现数据段的传送、校验。

三、实验代码_STACK SEGMENT STACKDW 100 DUP()_STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:DATA, SS:_STACKMOV AX, DATA ;将数据段的地址存入AX寄存器。

AX=004DHMOV DS,AX ;对DS段寄存器赋值。

DS=004DHMOV ES,AX ;对ES段寄存器赋值。

ES=004DHNOP ;空指令MOV CX,100H ;把100H送到CX寄存器。

CX=0100HMOV SI,3000H ;把3000H送到SI寄存器。

SI=3000HMOV DI,6000H ;把6000H送到DI寄存器。

DI=6000HCALL Move ;调用Move子程序MOV CX,100H ;把100H送到CX寄存器。

CX=0100HMOV SI,3000H ;把3000H送到SI寄存器。

SI=3000HMOV DI,6000H ;把6000H送到DI寄存器。

DI=6000HCLD ;将DF标志位置0。

设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出;若ZF=0或CX=0不成立,则继续比较。

SI和DI持续递增1JNE ERROR ;若ZF=0,跳到ERROR子程序TRUE: JMP $ ;跳到目前地址ERROR: JMP $ ;跳到目前地址Move PROC NEAR ;Move子程序CLD ;将DF标志位置0。

设置SI、DI为递增移动。

微机原理指令大全

微机原理指令大全

微机原理指令大全微机原理是计算机科学中的重要基础知识,而指令则是微机原理中的核心内容之一。

指令是计算机中的基本操作命令,它直接影响着计算机的运行和执行效率。

本文将为大家详细介绍微机原理中常见的指令,并提供一份完整的指令大全,希望能够帮助大家更好地理解和掌握微机原理中的指令知识。

一、数据传送指令。

数据传送指令是微机原理中最基本的指令之一,它用于将数据从一个地方传送到另一个地方。

常见的数据传送指令包括MOV、LDM、STM等。

这些指令可以实现寄存器之间、寄存器和内存之间、内存和输入输出设备之间的数据传送操作,是计算机程序中不可或缺的一部分。

二、算术运算指令。

算术运算指令用于进行各种数值计算操作,包括加法、减法、乘法、除法等。

常见的算术运算指令有ADD、SUB、MUL、DIV等。

这些指令可以对寄存器和内存中的数据进行各种算术运算,是计算机程序中常用的指令之一。

三、逻辑运算指令。

逻辑运算指令用于进行各种逻辑操作,包括与、或、非、异或等。

常见的逻辑运算指令有AND、OR、NOT、XOR等。

这些指令可以对寄存器和内存中的数据进行逻辑运算,是计算机程序中实现逻辑判断和控制流程的重要指令之一。

四、转移指令。

转移指令用于改变程序的执行顺序,包括无条件转移和条件转移两种。

常见的转移指令有JMP、JZ、JNZ、JC、JNC等。

这些指令可以实现程序的跳转和循环控制,是计算机程序中实现各种复杂逻辑的重要指令之一。

五、比较指令。

比较指令用于比较两个数据的大小关系,常见的比较指令有CMP、TEST等。

这些指令可以对寄存器和内存中的数据进行比较操作,并根据比较结果设置标志位,是实现条件转移和逻辑判断的重要指令之一。

六、输入输出指令。

输入输出指令用于实现计算机与外部设备的数据交换,包括输入数据和输出数据两种操作。

常见的输入输出指令有IN、OUT等。

这些指令可以实现计算机与外部设备之间的数据传输,是计算机程序中实现输入输出功能的重要指令之一。

完整版微机原理试验数据传送及两个多位十进制数相加

完整版微机原理试验数据传送及两个多位十进制数相加

深圳大学实验报告课程名称: _________ 微机原理及应用实验实验项目名称:数据传送及两个多位十进制数相加学院_________________________________专业__________________________________________________指导教师: __________________________________________________报告人:_学号:班级: ________________实验时间: ________________________________________实验报告提交时间: ___________________________________________教务处制、实验名称:数据传送及两个多位十进制数相加二、实验目的(1)学习数据传送和算术运算指令的用法。

(2)熟悉在PC机上建立、汇编、链接、调试和运行 8088汇编语言程序的过程。

三、实验内容将两个多位十进制数相加。

要求被加数均以ASCII码形式各自顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。

四、实验电路及连线(硬件实验)此实验属于软件实验,故无硬件实验的电路及连线。

五、程序说明(预习)包括程序功能,程序框图,算法说明及所用到的寄存器等。

功能:将被加数和加数分别显示,接着运行加法运算,然后将结果显示出来。

算法说明:①定义数据段:定义被加数和加数,且要使其用ASCII码以十六进制之间的转换;②定义堆栈段,并给SP_TO单元赋初值0;③定义代码段,并将源代码放在里面首先,编写主程序;接着,编写显示、回车换行和加法运算的子程序。

④程序结束。

所用到的寄存:AX SS、CS、DS ES、SI、SP、DI六、源程序清单(预习);DATAS SEGMENT ; DATA1 DB 33H,32H,38H,34H,37H DATA2 DB 34H,35H,39H,37H,31H DATAS ENDS数据段;定义DATA1为被加数;定义DATA2为加数STACKS SEGMENT ; 堆栈段STA DB 64 DUP(O) ; 为STA预留64个字节的存储空间SP_TOP DB 0 ; 定义SP_TO单元的数值为0 STACKS ENDSCODES SEGMENT ; 代码段ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置数据段MOV AX,STACKSMOV SS,AX ; 设置堆栈段LEA SP,SP_TOP ; 设置栈顶指针MOV SI,OFFSET DATA1 ; 把DATA1偏移量地址赋予SIMOV BX,05CALL DISPL ; 显示被加数CALLCRLF ; 回车、换行MOV SI,OFFSET DATA2 ; 把DATA2偏移量地址赋予SIMOV BX,05CALL DISPL ; 显示加数CALLCRLF ; 回车、换行MOV DI,OFFSET DATA1 ; 把DATA1偏移量地址赋予DICALL ADDA ; 调用ADDAF程序,实行加法运算MOV BX,05CALL DISPL ; 显示结果CALLCRLF ; 回车、换行MOV AX,4C00H ;INT 21H ; 调用DOS21H功能,返回CRLF PROC NEAR ; 回车、显示功能过程定义,属性为 NEAR MOV DL,0DH ; 把回车的ASCII码0DH传给DLMOV AH,02H ; 送DOS的中断调用功能号INT 21H ; DOS 的中断调用MOV DL,0AH ; 把换行的ASCII码0AH传给DLMOV AH,02H ;INT 21H ; DOSRET ; CRLF ENDP ;送DOS的中断调用功能号的中断调用返回完成过程定义DISPL PROC NEAR DSL: MOV AH,02 ;MOV DL,[SI+BX-1];INT 21H ; DOSDEC BX ;BXJNZ DSL ;RET ; DISPL ENDP ; 显示功能过程定义,属性为NEAR 送显示功能号显示字符串中一字符的中断调用减1,修改偏移量如果BX未减到零,跳到DSL执行指令返回完成显示功能子程序定义ADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05实行加法运算子程序过程定义,属性为TRAN_HEX: SUB BYTE PTR[SI+BX-1],30H ;把 ASCII 码数转化为十六进制SUB BYTE PTR[DI+BX-1],30HDEC BX ;BXJNZ TRAN_HEXMOV SI,DXMOV DI,BPMOV CX,05 ;CLC ;THE_ADD: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;AAA ;MOV [SI],AL ;INC SI ;SIINC DI ;DILOOP THE_ADD ;MOV SI,DXMOV DI,BPMOV BX,05 减1,修改偏移量;如果BX未减到零,跳到TRAN_HEX执行指令包括进位,共5位进位标志位 CF清零 (clear carry flag )带进位相加,把结果存在AX进行AAA调整,非结合BCD码的加法调整结果送被加数区加1加1 (指向下一位)循环TRAN_ASCI: ADD BYTE PTR[SI+BX-1],30HADD BYT田TR[DI+BX-1],30H ; 使用PTR转换属性并相加,将十六进制数转化为ASCII表示DEC BX ; BX 减1,修改偏移量RET ; 返回ADDA ENDP ;加法子程序定义完成CODES ENDS ; 代码段完成END START七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:实验三\l3.asm2.可执行程序路径及文件名:实验三\l3.exe;八、上机调试情况说明1.上机调试步骤A .通过dos对pts3.asm文件进行操作。

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

1. 通用数据传送指令MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)文案编辑词条B 添加义项?文案,原指放书的桌子,后来指在桌子上写字的人。

华电微机原理与技术汇编语言题目及答案

华电微机原理与技术汇编语言题目及答案

微机原理与接口技术汇编题目1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。

提示:1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H)DATA SEGMENTORG 2000HDB 1,,2,3,4,5,6,7,8,9,10 ; DB 定义字节数据ORG 3000HDB 10 DUP(O); 预留10个单元存放结果,初值预定义为0DATA ENDS定义的内存单元为:2、定义字数据命令为:DWDATA1 SEGMENTDW 1 , ,2 , 3, 4, 5, 6, 7, 8, 9, 10 ; DW 定义字数据DATA1 ENDS一个字为两个字节,在内存中低位在前,高位在后。

1已知0~15的平方值表,查表求X ( X是0到15间任一数)的平方值,送到Y单元,用两种方法。

2、已知0~255的平方值表,查表求X的平方值,送到Y单元。

提示:0到15的平方表,每个平方值为一个字节;0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。

一个字为两个字节,在内存中低位在前,高位在后。

1计算多字节数据788H与99AABBCCDDEEFF00H和。

2、计算8字节的BCD码十进制数788H与H的和3、计算10个字数据的和(数据自己定义)。

提示;1、多字节数据在内存中存放,低位在前,高位在后DAT1 DB 88H,77H,66H,55H,44H,33H,22H,11HDAT2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H DAT3 DB 9 DUP(O)二进制加法指令:ADDBCD十进制加法:ADD(4 )计算表达式的值1计算表达式Z ((X Y)*7)/(Y 2)的值,已知X=10, 丫=5。

提示:X DB 10Y DB 5Z DB ?AL=X-YBL=7AX=AL*BLBH=Y+2AL=AX/BH 的商AH=AX/BH的余数' -NniL无符号数乘法•JAmi有符号数乗法・例W I 讥-AX <- AL*DL1MHL BX : DX AX <-AX*BXMI L BYTE PTR[SI|; AX < AL*(DS* 16+STj(5)找最大、最小数1、找出2040H单元和2041H单元的大数,并送2042H单元(数据自己定义)2、找出10个数(8位数)里的最大数(数据自己定义)1、找出10个数(8位数)里的正数个数(数据自己定义)2、找出10个数(16位数)里的负数个数(数据自己定义)(7)数据块比较1、分别在FARD1和FARD2单元开始存放了10个字节数据,编程比较是否一义)。

《单片微机原理及应用》实验参考程序(32页)

《单片微机原理及应用》实验参考程序(32页)

《单片微机原理及应用》实验参考程序杭州电子科技大学电子信息学院张学超编写(使用达爱思Dais-80958B单片机实验开发系统)一、软件实验参考程序软件实验一清零程序Array ;将2000H-20FFH的内容清零SS01: CLR AMOV DPTR, #2000HMOV R7, #0FFHCLR0: MOVX @DPTR,AINC DPTRDJNZ R7, CLR0CLR1: SJMP CLR1 ; SJMP $软件实验二拆字程序;把2000H的内容拆开,高4位送2001H的低4位,低4位清零。

SS02: MOV DPTR, #2000HMOVX A, @DPTR ;取数MOV B, A ;暂存该数SW AP A ;高低半字节交换ANL A, #0FH ;屏蔽高4位INC DPTRMOVX @DPTR,A ;原数高半字节送2001HMOV A, B ;取回原数ANL A, #0FH ;屏蔽高4位INC DPTRMOVX @DPTR,A ;原数低半字节送2002HSJMP $软件实验三拼字程序;把2000H和2001H的低4位分别送入2002H的高低4位。

SS03: MOV DPTR, #2000HMOVX A, @DPTR ;取第一个半字节ANL A, #0FH ;屏蔽高4位SW AP A ;高低半字节交换MOV B, A ;暂存该数INC DPTRMOVX A, @DPTR,;取第二个半字节ANL A, #0FH ;屏蔽高4位ORL A, B ;两个半字节拼成一个字INC DPTRMOVX @DPTR,A ; 拼好的字送2002HSJMP $软件实验四数据区传送子程序;把R2R3为源RAM区首址内的R6R7字节数据传送到R4R5为目的RAM区。

SS04: MOV DPH, R2MOV DPL, R3 ;取源地址指针MOVX A, @DPTR ;取数据INC DPTR ;源地址指针+1MOV R2, DPHMOV R3, DPL ;保存源地址指针MOV DPH, R4MOV DPL, R5 ;取目的地址指针MOVX @DPTR, A ;存数据INC DPTR ;目的地址指针+1MOV R2, DPHMOV R3, DPL ;保存目的地址指针CLR CMOV A, R7SUBB A, #1MOV R7, AMOV B, A ;暂存16位字节数低字节MOV A, R6SUBB A, #0MOV R6, A ;字节数减一:(R6R7)← (R6R7)−1ORL A, B ;(R6R7)=0?JNZ SS04 ;未完继续传送RETSS04C: MOV R3, #00HMOV R2, #20H ;指定源地址为MOV R5, #00HMOV R4, #30H ;指定目的地址为3000HMOV R7, #00HMOV R6, #01H ;传送字节数为100HLCALL SS04 ;从2000H开始向3000H开始的地址区传送100H个数据SJMP $软件实验五数据排序实验;把8051中RAM 50H-5AH中放入不等的数据,运行本实验程序后检查50-5AH中内容是否按从小到大排列。

[计算机]微处理器实验报告传送类指令

[计算机]微处理器实验报告传送类指令

微处理器原理与应用实验日志实验题目:熟悉并使用传送类指令实验目的:1、熟悉并掌握Keil C51 的基本用法;2、掌握MCS-51 传送类指令功能与使用;实验要求:1、阅读、运行并调试已给的程序;2、模仿已给程序编写多字节数据传送程序;实验主要步骤:1、启动计算机,进入Keil C51的集成开发环境;2、根据已给程序编辑源程序;3、编辑完成以后对程序进行编译,生成目标代码;4、运行、调试目标代码和进行结果检查;5、根据要求编写多字节的数据传送程序;6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;7、修改内存单元中的内容在观察;实验结果:本次实验的目的是为了让我们熟悉keil-51软件的使用,学会怎么去建立工程,创建文件,调试、编译、运行程序,最后在自己理解程序的基础上去,查看运行结果。

第一个程序是验证性的,代码为:ORG 0000HAJMP STARTORG 0100HSTART: MOV A,#00HMOV R2,#0AHMOV R1,#03HLOOP: ADD A,R1DJNZ R2,LOOPNOPSJMP $END此程序的功能为:循环累加,结束条件是R2-1=0时,累加完毕。

所得结果储存在累加器A中。

最后的运行结果为:1EH。

按照实验要求第二个程序代码为:ORG0000HAJMP STARTORG 0100HSTART: MOV R0 ,#30HMOV R1,#10HMOV R2,#0AHMOV DPTR,#0100HLOOP: MOV A,R1MOV @R0,AMOVX @DPTR,AINC R0INC R1INC DPTRDJNZ R2,LOOPNOPSJMP $END此程序的目的运用循环结构对数据进行传输,把内部RAM的30H--39H单元置为10H-19H,然后传送到外部RAM的0100H--0109H单元。

在memory的address中键入: D:0x30 看见如下结果:在memory的address中键入:X:0x0010,可以看见如下结果:心得体会:通过这次的实验课,我了解了Keil C51这个单片机应用开发集成环境。

微机原理课后习题参考答案_2011_简版

微机原理课后习题参考答案_2011_简版

习题答案1-6 将下列十进制数转换为二进制数、十六进制数和BCD 数 (1)124.625 (6)268.875 解:(1)124=01111100B =7CH ,0.625×16=10,所以0.625=0.AH=0.1010B ∴124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD(2)268=256+12=100001100B =10CH ,0.875×16=14,∴0.875=0.EH=0.1110B. ∴268.875=10C.EH=100001100.111B=001001101000.100001110101BCD 1-7 用16位二进制数表示出下列十进制数的原码、反码和补码。

(1)+128 (4)-5 解:(1)+128 的原码和补码反码均为0000000100000000B(4)-5的原码为1000000000000101B ,反码为1111111111111010B ,补码为1111111111111011B 。

1-10 试绘出以下十六进制数在内存中存放的示意图。

设存放地址均为00H 。

解:(1)F7H (2)03BAH (3)C804326BH (4)1122334455667788H2-1 请将左边的术语和右边的含义联系起来,在括号中填入你选择的代号字母: 1. 字长 (i )a. 指由8个二进制位组成的通用基本单元。

2. 字节 (a )b. 是CPU 执行指令的时间刻度。

3. 指令 (h )c. μPS 所能访问的存储单元数,与CPU 地址总线条数有关。

4. 基本指令执行周期(g )d. 唯一能代表存储空间每个字节单元的地址,用5位十六进制数表示。

5. 指令执行时间 (j )e. CPU 访问1次存储器或I/O 操作所花的时间。

6. 时钟周期 (b )f. 由段基址和偏移地址两部分组成,均用4位十六进制数表示。

华电保定微机原理汇编实验

华电保定微机原理汇编实验

华电保定微机原理汇编实验实验一、数据块传送1.将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

源程序:DATAS SEGMENT;此处输入数据段代码ORG 2000HDATA1 DB 1,2,3,4,5,6,7,8,9,10ORG 3000HDATA2 DB 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,2000HMOV DI,3000HMOV CX,10NEXT:MOV AL,[SI]MOV [DI],ALINC SIINC DIDEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START运行结果:2.将数据段中2000H单元开始存放的10个数(16位数)传送到3000H开始的10个字中。

源程序:DATAS SEGMENT;此处输入数据段代码ORG 2000HDATA1 DW 1,2,3,4,5,6,7,8,9,10ORG 3000HDATA2 DW 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,2000HMOV DI,3000HMOV CX,10NEXT:MOV AX,[SI]MOV [DI],AXADD SI,2ADD DI,2DEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START运行后:3.将数据DATA1中的10个字节数据传送到数据段DATA2中源数据:DATAS SEGMENT;此处输入数据段代码DATA1 DB 1,2,3,4,5,6,7,8,9,10ORG 1000HDATA2 DB 10 DUP(0)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA SI,DATA1LEA DI,DATA2MOV CX,10NEXT:MOV AL,[SI]MOV [DI],ALINC SIINC DIDEC CXJNZ NEXTMOV AH,4CHINT 21HCODES ENDSEND START初始值:运行后:4.将数据段中2000H开始的20个数据传送到2010H开始的20个单元中。

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

数据块传递
1.1将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

(1)源程序:
DATAS SEGMENT
ORG 2000H
DATA1 DB 0,1,2,3,4,5,6,7,8,9
ORG 3000H
DATA2 DB 10 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,2000H
MOV DI,3000H
MOV CX,10
NEXT:
MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
1.2将数据段中2000H单元开始存放的10个数(16位数)传送到3000H开始的10个字中(1)源程序:
DATAS SEGMENT
ORG 2000H
DATA1 DW 0,1,2,3,4,5,6,7,8,9
ORG 3000H
DATA2 DW 10 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,2000H
MOV DI,3000H
MOV CX,10
NEXT:
MOV AX,[SI]
MOV [DI],AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
1.3将数据DATA1中的10个字节数据传送到数据段DATA2中(1)源程序:
DATAS SEGMENT
DATA1 DB 0,1,2,3,4,5,6,7,8,9
DATA2 DB 10 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,DATA1
LEA DI,DATA2
MOV CX,10
NEXT:
MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START
1.4将数据段中2000H开始的20个数据传送到2010H开始的20个单元中。

(1)源程序:
DATAS SEGMENT
ORG 2000H
DATA1 DB 0,1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1,0
DATA2 DB 20 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,2013H
MOV DI,2023H
MOV CX,20
NEXT:
MOV AL,[SI]
MOV [DI],AL
DEC SI
DEC DI
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODES ENDS
END START。

相关文档
最新文档