微机原理第4章1

合集下载

微机原理与接口技术-第4-1章

微机原理与接口技术-第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。

微机原理 第四章 微型计算机指令系统

微机原理 第四章 微型计算机指令系统

例: 已知: 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)微机原理与接口技术(第三版)(王忠民)

第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)立即数寻址方式 指令中的操作数直接存放在机器代码中,紧跟在操
作码之后(操作数作为指令的一部分存放在操作码 之后的主存单元中)

长沙理工大学微机原理题目答案

长沙理工大学微机原理题目答案

长沙理⼯⼤学微机原理题⽬答案3.1 8086CPU与8088CPU有哪些相同之处:⼜有哪些区别?3.2 8086系统的物理地址是如何得到的?假如CS=2000H,IP=2100H其物理地址应是多少?3.3 什么是总线周期?8086CPU的⼀个总线周期包括多少时钟周期,什么情况下插⼊Tw等待周期:插⼊多少个Tw取决于什么因素?第四章习题4.1 需要定时刷新的存储器是(B ).A.SARMB.DRAMC.EPROMD.EEPROM4.2利⽤容量为4K×2b的SRAM芯⽚构成从A4000H到B7FFFH的内存,⽤这样的芯⽚需要( C ).A.40⽚B.60⽚C.80⽚D.100⽚4.3 突然断电后,计算机__C___中的数据将全部丢失.A.硬盘B.ROM和RAMC.RAMD.ROM4.4 下⾯的说法中,正确的是___D___.A.EPROM是不能改写的.B.EPROM是可以改写的,所以也是⼀种读写存储器.C.EPROM只能改写⼀次.D.EPROM是可以改写的,但他不能作为读写存储器.4.5 可直接存取16M字节内存的微处理器,其地址总线需_A___条.A.24B.16C.204.6某微机系统的存储器地址空间为A8000H~CFFFFH,若采⽤单⽚容量为16K×1位的SRAM芯⽚构成,回答以下问题:(1)系统存储容量为多少?(2)组成该存储系统共需该类芯⽚多少个?(3)整个系统应分为多少个芯⽚组:解4.6:(1)系统存储容量=CFFFFH-A80000H+1=28000H(B)=160(KB).(2)所需芯⽚=160K×8位/16K×1位=80(个).(3)该芯⽚字长不⾜8位,应以8位为⼀组构成字节单元.所以80个芯⽚应分成80/8=10个芯⽚组.4.7下列RAM各需要多少条地址线进⾏寻址,多少条数据I/O线?(1)64K×1 (2)256K×4解4.7: (1)16条地址线,⼀条数据I/O线.(2)需要18条地址线,4条数据I/O线.5.1、设DS=6000H,ES=2000H,SS=1500H,SI=00A0H,BX=0800H,BP=1200H,数据变量V AR为0050H。

微机原理 第四章答案

微机原理 第四章答案
14、设(BX)=0400H,(DI)=003CH,执行 LEA BX,[BX+DI+0F62H]后,(BX)=? (BX)=139E H
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

微机原理 第4章

微机原理 第4章
M3 DB 3 DUP(22H,11H,?)
31
数据定义伪指令例
M2 11H 00H 11H 00H 11H 00H 44H 33H XX XX XX XX
M1
‘H’ ‘o’ ‘w’ ‘ ‘ ‘a’ ‘r’ ‘e’ ‘ ‘ ‘y’ ‘o’ ‘u’ ‘?’
M3
22H 11H XX 22H 11H XX 22H 11H XX
随机数
32
符号定义伪指令

格式:

符号名 EQU
表达式

操作:

汇编时用语句中的表达式代替程序中符号所在的地方
1. 定义符号常量,方便修改程序。 2. 某表达式多次出现时,用等值伪操作可以方便编程。 3. EQU定义的名称在程序中只能定义一次。 CONSTANT EQU 100 VAR EQU 30H+99H
汇编语言语句类型
指令性语句
CPU执行的语句,能够生成目 标代码
指示性语句
CPU不执行,在程序执行前由 汇编程序处理的说明性指令
7
指令性语句格式
[标号:] [前缀] 助记符 [操作数],[操作数] [ ;注释]
指令的符号地址 标号后要有冒号
操作码 注释前加分号
8
指示性语句格式
[名字] 伪指令助记符 操作数 [,操作数,…] [ ;注释]
5
完整汇编语言程序框架
STACK SEGMENT STACK ;定义堆栈段 DW 512 DUP (?) ;堆栈段有512字(1024字节)空间 TOP LABEL WORD STACK ENDS ;堆栈段结束 DATA SEGMENT ;定义数据段 STRING DB ’HELLO, EVERYBODY !’,0DH,0AH,’$’ DATA ENDS CODE SEGMENT ’CODE’ ;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA ;建立DS段地址 MOV DS,AX MOV DX,OFFSET STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H ;利用功能调用返回DOS CODE ENDS ;代码段结束 END START ;汇编结束,同时指明程序起始点

微机原理(4章)

微机原理(4章)

《微机原理与应用》备课笔记B(第四章)第11次上课内容.第一部分指令观察1、算术运算指令观察——zlgc1,zlgc22、逻辑运算指令观察——zlgc33、条件转移指令观察------zlgc4第二部分第四章汇编语言程序设计4-1 概述、一、什么是汇编语言汇编语言是用指令助记符、符号地址、标号等书写程序的语言。

特点:易读、易写、易记,。

但是不如高级语言具有很好的通用性和可移植性,也不能像机器语言直接运行。

二、汇编语言上机过程4-2汇编语言基本语法4-2-1 汇编语言源程序实例——zlgc2,exmp1例1:把内存中从STRING 开始的字符串传送到BLOCK 开始的内存区域去.DAT1 SEGMENT STRING DB 'ABCD1234' NUMEQU $-STRING DAT1 ENDS DAT2 SEGMENT BLOCK DB 50 DUP(?) DAT2 ENDS COD SEGMENTASSUME CS:COD,DS:DAT1,ES:DAT2 START: MOVAX,DAT1MOV DS,AX MOV AX,SEG BLOCK MOV ES,AX MOV CX,NUM LEA SI,STRING MOV DI,OFFSET BLOCK LP: MOV AL,[SI] MOV ES:[DI],AL INC SI INCDILOOP LP MOV AH,4CH INT 21HCOD ENDS ENDSTART汇编语言语句种类——指令语句、伪指令语句、宏指令语句1) 指令语句——由指令系统中有的指令构成。

它指示CPU执行某种操作。

指令语句指令语句伪指令语句该指令语句汇编后将产生目标代码。

2)伪指令语句——属于说明性语句。

仅在汇编过程中起汇编管理和说明的作用,不产生目标代码。

实验二指令观察1、算术运算指令观察——zlgc1,zlgc22、逻辑运算指令观察——zlgc33、条件转移指令观察------zlgc44-2-2伪指令语句格式:名字伪操作指令[参数表] [;注释]1、段定义伪指令1)段定义伪指令格式:段名SEGMENT……段名ENDS用于定义源程序的各个逻辑段。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编后的形式为: MOV AX,4096
➢用于地址表达式,例: LEA SI,TAB+3
若TAB的偏移地址为1000H,则汇编后的形式 为:
LEA SI,[1003H]
Байду номын сангаас
2)逻辑运算符—— AND、OR、XOR、NOT
逻辑运算符只能用于数字表达式中。 例:MOV CL,36H AND 0FH 经汇编后:MOV CL,06H
4)取地址运算符——SEG、OFFSET
SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址
例:VAR DB 12H
……
MOV BX,OFFSET VAR ;取变量VAR的偏移地址 MOV AX,SEG VAR ;取变量VAR的段地址
注意,以下指令的异同:
MOV BX, OFFSET VAR LEA BX, VAR
例如:以下为同一条指令写的注释 1)MOV CX,100 ;100送CX 2)MOV CX,100 ;给计数器送初值
显然,第二种写法要比第一种写法要好。
4.1.3 数据项与表达式
数据项包括常量、变量、标号及表达式。 1.常量
➢二进制数,以B结尾。如01001101B。 ➢十进制数,如85。 ➢十六进制数,以H结尾。第1个数字为A-F时,前
– 对指令性语句——0,1,2个 – 对指示性语句——根据需要而定 – 操作数之间以逗号分隔 – 操作数可以是——寄存器、存储单元、常数或表达式
例如:MOV BYTE PTR[DI+BX+10],16*8+TABLE
注解——以分号开头,可放在指令后,也可 单独一行。
注意注解的写法。要写本指令在程序中的作 用,而不要写指令的操作。
注意,不要把逻辑运算符与逻辑运算指令混淆: 例:AND AX, 3FC0H AND 0FF00H 经汇编后:AND AX,3F00H
3)关系运算符——EQ、NE、LT、GT、LE、GE
➢关系运算的结果是一个逻辑值:真或假 关系为真,结果为全1 关系为假,结果为全0
例:MOV BX,PORT GT 300H 若PORT的值大于300H,则汇编后为: MOV BX,0FFFFH 否则汇编后为: MOV BX,0
指令性语句汇编时生成机器码; 指示性语句汇编时不生成机器码。
汇编语言的一个实例: hello.asm
data SEGMENT Hello DB ‘Hello, world!’,0DH,0AH,’$’ data ENDS prog SEGMENT
ASSUME CS:prog,DS:data start: MOV AX,data
➢标号作为转移指令或CALL指令的转移地址。
3.变量
变量就是内存中的数据区。 变量名是存储单元的符号地址(或数据区的 名字)。
➢变量的三个属性:
✓段地址—变量所在段的段地址 ✓偏移量—变量单元地址与段起始地址之间的位移量。 ✓类 型—有BYTE、WORD和DWORD三种。
➢变量在程序中作为存储器操作数被引用。
微机原理第4章1
汇编语言程序框架如下:
stack
stack data
data
SEGMENT PARA ‘stack‘
DB 100 DUP(‘stack’) ENDS SEGMENT
<数据、变量在此定义>
ENDS
code SEGMENT ASSUME CS:code, DS:data, ES:data
start: MOV AX, data
MOV DS, AX MOV ES, AX
<加入你自己的程序段>
MOV AL, 4CH INT 21H
code ENDS END start
堆栈段 数据段
代码段
4.1.2 汇编语言的语句与格式
汇编语言的语句有两种:
指令性语句——由8086指令助记符构成的语句 指示性语句——由伪指令构成的语句
面应加0,如0F160H。 ➢字符串:用引号括起来的1个或多个字符。如
‘ERROR!’, ’A’,汇编时被翻译成对应的ASCII 码45H,52H,52H,4FH,52H,21H和41H。
2.标号——指令所在单元的符号地址
➢有三个属性: 段地址:即标号所在段的段地址; 偏移量:标号所代表存储单元的段内偏移地址; 类 型:NEAR或FAR: NEAR—表示标号所在语句与转移指令/ 调用指令在同一码段内,跳转时 只需改变IP即可。 FAR—标号所在语句与转移指令/调用 指令不在同一代码段内。 若没有对类型进行说明,默认为NEAR。
MOV DS,AX
LEA DX,hello
MOV AH,9 INT 21H MOV AH,4CH INT 21H
prog ENDS END start
语句的构成元素:
标号——指令的符号地址,表示该指令的起始存 储地址,后加冒号
名字——段、过程、变量的名字,用来代表它们 在存储器中的地址
指令助记符——8086助记符、伪指令 操作数——即指令的操作对象
指令性语句的格式为:
标号: 指令助记符 目的操作数,源操作数 ;注释
指示性语句的格式为:
名字 伪指令 操作数1,操作数2,…,操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。
●指令性语句由CPU执行,每一条指令性语 句都有一条机器码指令与其对应;
●指示性语句由汇编程序执行。它指出汇编 程序应如何对源程序进行汇编,如何定义变 量,分配存储单元以及指示程序开始和结束等。 指示性语句没有机器码指令相对应。
标号和变量名的使用规则
– 组成:A-Z(不分大小写), 0-9, ?@ . _ $ – 不能以数字开头,句号(.)只能作为首字符
– 长度小于31个字符 – 不能与保留字(指令助记符、伪指令、预定义符
号等)重名 – 不能重复定义
例如:
正确的:L1, AGAIN, NEXT, _GO, OK_1 错误的:4M, LOOP, AAA, #HELP, +ONE
4.表达式
➢表达式是常数、寄存器、标号、变量与 运算符的组合。
➢有数字表达式和地址表达式两种。
➢汇编时按优先规则对表达式进行计算, 计算出具体的数值或地址。运行时不能改 变。
➢表达式中的运算符有6类:算术、逻辑、 关系、取地址、属性、杂类。
1)算术运算符—— +、-、*、/,MOD
➢用于数字表达式,例: MOV AX,4*1024
相关文档
最新文档