第一章
1. 辨析三个概念:微处理器、微型计算机、微型计算机系统
微处理器:简称μP或MP(Microprocessor)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理器部件,又称为微处理机。
微型计算机: 简称μC或MC,是指以微处理器为核心, 配上存储器、 输入/输出接口电路及系统总线所组成的计算机(又称主机或微电脑)。
微型计算机系统(主机+外设+软件配置)(Microcomputer system) 简称μCS或MCS,是指以微型计算机为中心, 以相应的外围设备、电源和辅助电路(统称硬件) 以及指挥微型计算机工作的系统软件所构成的系统。
2.微机系统结构(三种总线结构):数据总线,地址总线,控制总线
第三章
3.8086cup内部结构
由两部分组成:总线接口单元BIU(Bus Interface Unit); 执行单元EU(Execution Unit).
(1).总线接口单元BIU
组成: 4个16位的段寄存器(CS、DS、ES、SS);
1个16位的指令指针寄存器IP;
1个20位的地址加法器;
1个指令队列(长度为6个字节);
I/O控制电路(总线控制逻辑);
内部暂存器。
BIU的功能:根据EU的请求负责CPU与内存或I/O端口传送指令或数据。
① BIU从内存取指令送到指令队列
② 当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。
(2)执行单元EU(Execution Unit)
组成:①ALU(算术逻辑单元);
②通用寄存器组 AX,BX,CX,DX(4个数据寄存器)
BP(基址指针寄存器)
SP(堆栈指针寄存器)
SI(源变址寄存器)
DI(目的变址寄存器)
③数据暂存寄存器
④标志寄存器FR
⑤ EU控制电路
作用:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。
4.物理地址与逻辑地址有什么区别?
答:逻辑地址是指未定位之前在程序中存在的地址,由段地址和偏移地址组成。物理地址是实际访问存储器时的地址(通过20位地址总线传递)。
5.在什么情况下8086的执行单元(EU)才需要等待总线接口单元(BIU)提取指令?
答:EU在执行完转移、调用(包括子程序调用和中断调用)和返回指令时,因指令的执行顺序发生跳转,原来预取到指令队列中的指令将不再执行,需清空指令队列缓冲器。在此情况下,EU才需要等待BIU从新的地址重新开始提取指令。
6.存储器为什么要分段(段加偏移)?
答:1.8086有1M的存储空间,有20根地址线,而CPU的指令指针和堆栈指针都是16位的,只能直接寻址64KB的地址空间,为了能寻址1MB的空间,需要把存储器分为若干段。
2.存储器的分段的机制允许重定位,由于段寄存器里的段地址可以由程序来重新设定,因而使得程序和数据不需要进行任何修改,就能使他们重定位。
7.段地址和段基址概念辨析
1)段地址:段寄存器的内容,出现在汇编后的机器指令中。
2)段基址:段地址左移4位后形成的20位段起始地址。
8.8086CPU系统中为什么要用地址锁存器?
8086CPU由于引脚数量少,其地址总线采用了分时复用的双重总线,仅在总线周期的T l 时钟周期输出地址信号, 而在整个总线周期中地址信号需保持不变,这就需用地址锁存器将T1周期发出的地址信号锁存起来以在整个总线周期中都能使用,为此8086CPU在T 1 周期提供地址锁存允许信号ALE(正脉冲),用ALE的下降沿将地址信息锁存在地址锁存器中(3分) 共需3片73LS373芯片用作地址锁存器,锁存信息A 19 —A 0 和 BHE
9.8086的最大工作模式和最小工作模式的区别?
答:最小工作方式即单处理器系统方式;在此方式下,全部控制信号由CPU本身提供,它适合于较小规模的应用。CPU工作于最大工作方式时,系统的控制信号由8288总线控制其提供,通常,在最大方式系统中一般包含两个或多个处理器。
10.什么叫重定位?
答:重定位是指一个完整的程序块或数据块可以在存储器所允许的空间内任意浮动并定位到一个新的可寻址的区域。
11.8086指令系统的特点
答:8086与8088的指令系统由8位的8080/8085指令系统扩展而来的,同时又能在其后续的80x86系列的CPU上正确运行。其主要特点是:
(1) 采用可变长指令,指令格式比较复杂。
(2) 寻址方式灵活多样,处理数据的能力比较强。
(3) 有重复指令和乘、除运算指令。扩充了条件转移、移位/循环指令。
(4) 为加强软件中断功能和支持多处理器系统的工作,增设了有关的指令。
12.总线周期
概念:总线周期通常是指微处理器完成一次访存或I/O端口操作所需的时间。(类似于机器周期)
在8086/8088中,一个最基本的总线周期由4个时钟周期组成, 分别称为4个状态,即T1、T2、T3与T4这4个状态。
T1状态:CPU往多路复用总线上发送地址信息,以选中所要寻址的存储单元或外设端口的地址。
T2状态:CPU从总线上撤消地址,并使总线的低16位浮置成高阻状态,为传送数据做准备。
T3状态,多路总线的高4位继续提供状态信息,而其低16位(对8088 CPU则为低8位)上将出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
说明: 若访问设备未准备好,则CPU会在T3之后自动插入1个或多个附加的时钟周期Tw,这个Tw就叫等待状态(CPU在每个总线周期的T3状态开始对READY信号采样。)
T4状态:CPU采样数据总线,完成本次读/写操作, 总线周期结束。(要对INTR信号进行采样)
说明:只有BIU与内存或I/O端口交换数据,以及填充指令队列时,BIU才执行总线周期。除此之外,既不需要填充指令队列,EU也没有向BIU发出总线周期请求时,系统总线就处于空闲状态,进入空闲周期,空闲周期由一个或几个Ti状态组成。
13.RESET
复位后,标志寄存器与指令队列缓冲器的原有信息被清除,IP与DS、SS和ES也被清零,而CS被置为FFFFH。当RESET信号变为低电平时,CPU就从FFFF0H开始执行程序。在程序执行时,RESET线保持低电平。
14.指令数据在存储器中的存放
若存放的信息为1个字时,则将字的低位字节放在低地址中,高位字节放在高地址中。(注:对存放的字,若低位字节从奇数地址开始存放,为非规则字;反之,为规则字。读一个规则字需要访问一次存储器,读一个非规则字需要访问两次存储器)
当存放的是双字形式(这种数一般作为指针),其低位字是被寻址地址的偏移量;高位字则是被寻址地址所在的段地址。
15.8086的存储器为什么要分段?
答案见 6
16. 8086/8088指令的分类
8086/8088的指令按功能可分为6大类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制
数据传送指令(细分成4类)
· 通用数据传送指令
MOV、PUSH、POP、XCHG、XLAT
· 目标地址传送指令
LEA、LDS、LES
· 标志位传送指令
LAHF、SAHF、PUSHF、POPF
· I/O数据传送指令
IN、OUT
传送指令: MOV DST, SRC
执行操作: (DST) ¬ (SRC)
说明:可实现一个字节或字的传送(例子见教材P66)。
注意:
* DST、SRC 不能同时为段寄存器 MOV DS, ES ´
* 立即数不能直接送段寄存器 MOV DS, 2000H ´
* DST 不能是立即数和CS
* DST、SRC 不能同时为存储器寻址
* 不影响标志位
进栈指令: PUSH SRC
注意:
* 堆栈操作必须以字为单位。
* 不影响标志位
* 不能用立即寻址方式 PUSH 1234H ´
* DST不能是CS POP CS ´
* 并非局限在栈顶操作 MOV AX,[BP][SI]
交换指令: XCHG OPR1, OPR2
执行操作: (OPR1) « (OPR2)
注意:
* 不影响标志位
* 不允许使用段寄存器
* 不能在存储器单元之间交换
换码指令:XLAT 或 XLAT OPR(通过查表实现)
执行操作:(AL) ¬ ( (BX) + (AL) )
例:MOV BX, OFFSET TABLE ; (BX)=0040H(表预先建立在内存)
MOV AL, 3 ;索引值
XLAT TABLE
指令执行后 (AL)=30H
注意:
* 不影响标志位
* 字节表格(长度不超过256字节)
首地址 ® (BX)
* 需转换的代码位移量 ® (AL)
· 目标地址传送指令
有效地址送寄存器指令: LEA REG, SRC
执行操作: (REG) ¬ SRC(存储器)
指针送寄存器和DS指令: LDS REG, SRC
执行操作: (REG)¬(SRC) (DS) ¬ (SRC+2)
相继二字 ® 寄存器、DS
指针送寄存器和ES指令: LES REG, SRC
执行操作: (REG) ¬ (SRC) (ES) ¬ (SRC+2)
相继二字 ® 寄存器、ES
注意:
* 不影响标志位
* REG 不能是段寄存器
* SRC 必须为存储器寻址方式
· 标志位传送指令
标志送AH指令: LAHF
执行操作: (AH) ¬ (FLAGS的低字节)
AH送标志寄存器指令: SAHF *(置位/复位)
执行操作: (FLAGS的低字节) ¬ (AH)
标志进栈指令: PUSHF(转子/中断调用)
执行操作: (SP) ¬ (SP) - 2
( (SP)+1, (SP) ) ¬ (FLAGS)
标志出栈指令: POPF * (转子/中断调用)
执行操作: (FLAGS) ¬ ( (SP)+1, (SP) )
(SP) ¬ (SP) + 2
* 影响标志位
二、 算术运算类指令(共20条指令)
· 加法指令
ADD、ADC、INC
· 减法指令
SUB、SBB、DEC、NEG、CMP
· 乘法指令
MUL、IMUL
· 除法指令
DIV、IDIV、CBW、CWD
执行 REP MOVS 之前,应先做好
(初始化工作):
(1) 源串首地址(末地址)→ SI
(2) 目的串首地址(末地址)→ DI
(3) 串长度 → CX(最大64KB)
(4) 建立方向标志
( CLD 使 DF=0,STD 使 DF=1 )
一个串传送的例子:
data segment
mess1 db ‘personal_computer’;字符数组
data ends
extra segment
mess2 db 17 dup (?)
extra ends
code segment
mov ax, data ;不能:mov ds, data (×)
mov ds,ax ;立即数不能直接送段寄存器
mov ax, extra ;不能:lea ds, data (×)
mov es, ax ;用于取变量的有效地址
lea si, mess1 ;源串首地址
lea di, mess2 ;目标串首地址
mov cx, 17 ;串长度
cld ;建立方向标志 (CLD使 DF=0,STD 使 DF=1)
rep movsb ;串传送
…
code ends
例(续):把 附加段 中的 10 个字节缓冲区置为 20H
lea di, mess2
mov al, 20H
mov cx, 10
cld
rep stosb
比较例3.66中两串是否完全相同,若两串相同,则BX寄存器内容为0;若两串不同,则BX指向源串中第1个不相同字节的地址,且该字节的内容保留在AL寄存器中。
CLD
MOV CX,100
MOV SI,2500H
MOV DI,1400H
REPE CPMSB ;串比较,直到ZF=0或CX=0
JZ EQQ ;两串相同,置BX为0
DEC SI ;将指针修改回第1个不相同字节处
MOV BX,SI
MOV AL,[SI]
JMP STOP ;必须跳转,否则仍继续执行EQQ
EQQ: MOV BX,0
STOP:HLT
例:试比较两个无符号数80H和79H,则用下面的指令,即
MOV AL,80H
CMP AL,79H
JA ABOVE
例:试比较两个有符号数80H和79H,则用下面的指令,即 MOV AL,80H
CMP AL,79H
JG GREATER
第三章习题答案整理
3.3 答:由两部分组成:总线接口单元BIU(Bus Interface Unit),执行单元EU(Execution Unit). BIU的功能是根据执行单元的请求负责CPU与I/O端口或则存储器之间的数据传输。
EU单元的作用是:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。
3.4 答:组成:4个16位的段寄存器(CS、DS、ES、SS);
1个16位的指令指针寄存器IP;1个20位的地址加法器;
1个指令队列(长度为6个字节);
I/O控制电路(总线控制逻辑);内部暂存器。
段寄存器和地址加法器:8086的内存空间为1M,地址线为20根,但是8086的内部寄存器只有16位,因此采用“段加偏移”技术来解决这一问题,由段寄存器提供段地址,左移4位形成段基址,通过地址加法器与有效地址相加得到20位物理地址。
指令队列:指令队列由6字节的寄存器组成,最多可以存入6字节的指令代码,8086执行指令时,将从内存或则存储器中取出一条或则几条指令依次存入指令队列缓冲器里,他们采用“先进先出”的原则,顺序取到EU中去执行
16位指令指针:IP的功能相当于8位CPU中的PC,正常运行时,IP中含有BIU要去的销一条指令的偏移地址,在程序运行时能自动加1修正,使之指向下一条指令。
3.5 答:并行操作方式是指EU和BIU着两部分同时工作,EU但愿从指令队列头中取指令,只要指令队列不是空,他就一直执行,无需等待。由于8086中的BIU和EU是分开独立设计的,因此,在一般情况下,CPU执行完一条指令后就可以立即执行下一条指令,无需等待。因此说8086可以并行操作。 当EU在执行完转移、调用(包括子程序调用和中断调用)和返回指令时,因指令的执行顺序发生跳转,原来预取到指令队列中的指令将不再执行,需清空指令队列缓冲器。在此情况下,EU才需要等待BIU从新的地址重新开始提取指令。
3.6 答:逻辑地址是指未定位之前在程序中存在的地址,由段地址和偏移地址组成。物理地址是实际访问存储器时的地址(通过20位地址总线传递)。为什么要引入段加偏移思想:1.8086有1M的存储空间,有20根地址线,而CPU的指令指针和堆栈指针都是16位的,只能直接寻址64KB的地址空间,为了能寻址1MB的空间,需要把存储器氛围若干段。
2.存储器的分段的机制允许重定位,由于段寄存器里的段地址可以由程序来重新设定,因而是的程序和数据不需要进行任何修改,就能使他们重定位。
段加偏移的含义是:利用16位的段寄存器的内容确定20位起始地址的高16位,由IP或由EU按照寻址方式找出的16位偏移地址,然后将段基址与偏移地址相加得到一个20位的实际地址,以对存储单元寻址。
3.7 答:指令队列缓冲器的作用是存放从内存或则存储器中取出的指令,供EU执行。8086的指令队列由6字节的寄存器组成,8088的指令队列由4字节的寄存器组成。
3.9 答:不同。段地址左移4位就得到了段基址;是;段寄存器中的内容左移4位得到段基址。
3.20 答:当CPU取指或与I/O端口或者存储器交换数据的时候才执行总线周期。T1~T4状态。如果存储器或则外设的速度比较慢,不能及时跟上CPU的速度时,存储器或则外设通过一个READY信号在T3启动之前发送一个“没有准备好”的信号,并且CPU会在T3启动后插入1个或多个Tw等待状态。
3.26 答:ALE信号时地址锁存信号(Address Lock Enable),它通知地址锁存器8282当前地址为有效地址,可以锁存。 不能。 DT/R(非)控制8286的数据传输方向。当DMA请求时,它被置于高阻状态。
3.28 答:最大工作方式和最小工作方式。MN/MX(非)(非:就是对MX取反)引脚来控制。
最小工作方式即单处理器系统方式;在此方式下,全部控制信号由CPU本身提供,它适合于较小规模的应用。CPU工作于最大工作方式时,系统的控制信号由8288总线控制其提供,通常,在最大方式系统中一般包含两个或多个处理器。
3.32 答(1) 立即数寻址 (2)直接寻址 (3)变址寻址 (4)变址寻址 (5)寄存器寻址 (6)寄存器相对间接寻址 (7)隐含寻址 (8)寄存器寻址 (9) I/O间接寻址 (10)基址寻址
3.33 (1) PA=(DS)*16+(DI) (2) PA=(DS)*16+(BX)+(SI)
(3) PA=(DS)*16+8+(BX)+(DI)
(4) PA=(ES)*16+(BX)
(5) PA=(DS)*16+2400H
(6) PA=PA=(DS)*16+(BX)+(DI)+1200H
(7) PA=(SS)*16+(BP)+(SI)
(8) PA=(DS)*16+(BX)+(DI)+1200H
3.34 (1) IP不可编程访问,或IP不可作为源操作数出现在普通指令中。(CS,IP,FLAG等都不可编程访问)
(2)cs不可编程访问。
(3)SI+2是对寄存器的非法使用(应为[SI+2])
(4)MOV指令的目标操作数不能为立即数
(5)PUSH指令的操作数不能为立即数
(6)未指明数据长度(可以改为 INC WORD PTR[BX])
(7)乘数不能为立即数且MUL只能完成无符号数的乘法
(8)未知名数据长度(可改为 ADD WORD PTR[2400H],2AH)
(9)MOV指令的两操作数不能同时为存储器操作数
(10) 数据类型不匹配(可改为 MOV SI,AX)
3.36
(1)AX=0ABCH (2) AX=0ABBH (3) AX=00BBH (4)CL=04H
(5) AL = 76H (6) CL = 76H (7)CL = EEH (8) AX = 0076H
(9) BX = 0076H
3.39 (2) PA=(DS)*16+list+(bx)+(si)=11950H
3.47 (1) AND AH,0FH
(2) XOR AL,F0H
(3) MOV CL,4
SHR AL,CL
(4) MOV CL,4
SHL AL,CL
3.50 ADD AX,AX ; AX=6264H
JZ DONE
SHL CX , 1 ; CX=0008H
ROR AX,CX ;AX=6462H
DONE: OR AX,1234H ; AX = 7672H
3.57 AX+DX=0011000100000000B
所以 CF = 0 , AF = 1 , SF = 0 ZF = 0 , OF = 0 PF=1
3.67 MOV AL,BL
CBW
IDIV CL
MOV DL,2
IMUL DL
MOV DX,AX
3.70 (5)AND [BP],CX
(6) AND BYTE PTR[WAIT1],AL
3.72 (3) OR SI , DX
(5) OR [BP] ,CX
3.73 OR DI , 001F
MOV SI , DI
3.75 (1) MOV CL, 3
SHR DI , CL
(2) SHL AL,1
3.78 1)JMP [DI]:该指令为段内间接转移。DI中的内容为指向存储单元的偏移地址,从该地址开始的2个字节中存放着要跳转到的指令的偏移地址,执行指令时,将该偏移地址(DS:DI和DS:DI+1)中的内容送IP,段地址不变。
2) JMP FAR PTR[DI]:该指令为段间间接远转移。DI中的内容为指向存储单元的偏移地址,从该地址开始的4个字节中存放着要跳转到的指令的目标地址,其中,前2个字节为偏移地址,后2个字节为段地址。执行指令时,将该偏移地址送IP,段地址送CS。
3.79 CLD
MOV CX,100
MOV SI,6180H
MOV DI,2000H
REP MOVSB
DEC DI
STD ;也可直接用MOV DI,2000H
MOV CX,100
SCAN:SCASB
JNZ NEXT
INC DI
MOV BYTE PTR [DI],‘ ’(或20H)
DEC DI
NEXT:LOOP SCAN
MOV AH,4CH ;终止程序,返回DOS
INT 21H
3.82 答:答案参见 p95 ④ RET 弹出值 p99 IRET
第四章
17.汇编语言是直接面向微处理器编程的程序设计语言,具有执行速度快和易于实现对硬件的控制等独特的优点,所以至今仍然是使用得较多的编程语言。特别是在对于程序的空间和时间要求很高的场合,以及需要直接控制设备的应用场合,汇编语言更是必不可少。
18.汇编语句的4个字段是:
1)名字或标号;
2)操作码(指令助记符)或微操作命令;
3)操作数表(操作数或地址)
4)注释
19.8086汇编语句的种类:(3种):指令语句,伪指令语句,宏指令语句
20.指令性语句格式:[标号:][前缀]指令助记符[操作数表][;注释]
21.伪指令性语句格式:[名字]伪指令[参数表][;注释]
22. 表达式的求值是由汇编程序完成的。
23.逻辑运算符出现在操作数中时为微操作,其功能在汇编时完成 例如
MOV AX,75A6H AND 2465H
24. 关系运算符:EQ、NE、LT、GT、LE、GE。
说明:关系运算的结果是一个常数(布尔值)。关系成立,结果为0FFFFH,否则,为0。
25. 变量的定义:1) VAR DB 12; 2) VAR DB 12 DUP(0) (字节串/字符串)
3) VAR DW 12 DUP(?)(字串)
4)VAR DB 12 5 DUP(5) (字节串,只给部分字节赋值)
26. 分析运算符:分析运算符用来把存储器操作数(变量或标号)分解为它的组成部分(段地址、偏移值、类型 、数据字节总数、数据项总数等),并以数值形式回送给变量或标号(例子见教材P136)。
SEG 回送变量或标号的段地址;
OFFSET 回送变量或标号的偏移量;
TYPE 回送反映变量或标号类型的一个数值;
SIZE 回送变量数据区的字节总数;
LENGTH 回送变量数据区的数据项总数;
HIGH 取地址表达式或16位绝对值的高8位;
LOW 取地址表达式或16位绝对值的低8位;
27. $地址计数器
假定进行汇编时,为 VAR 分配的偏移地址为0074H。那么汇编伪指令: VAR DW 1,2,$+4,3,4,$+4后,该存储区的存储情况如何?
28. 在指令中引用$时,$就表示该指令首地址,与$本身所指向单元无关。
比如指令:JNZ $+6
该指令的转移地址是JNZ指令的首地址加上6。当然,$+6必须是某一条指令的首地址,这样才能达到正确转移的目的。
29.DOS及BIOS中断调用前七个
第四章习题整理
4.2 AX=0020H BX=0202H CX=0220H
4.3
DATA SEGMENT
X DB ?
Y DB ?
K DB ?
DATA SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AL,X
MOV BL,Y
CMP AL,0
JE ABE ;落在坐标轴上
JG ABC ;落在第1、4象限
JL BBC ;落在第2、3象限
ABC: CMP BL,0
JE ABE
JG ABD ;Y>0,则落在第1象限
MOV K,4 ;Y<0,则落在第4象限
BBC: CMP BL,0
JG BBD ;Y>0,则落在第2象限
MOV K,3 ;Y<0,则落在第3象限
ABD: MOV K,1
BBD: MOV K,2
ABE: MOV K,0
CODE ENDS
END START
4.4 DATA SEGMENT
CHAR1 DB ‘abcdef’
N EQU $-CHAR1
CHAR2 DB N DUP(0)
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:CLD
MOV CX,N
LEA SI,CHAR1
LEA DI,CHAR2
NEXT:LODSB
SUB AL,32 ;或20H,因小写字母的ASCII码值比大写字母大32
STOSB
LOOP NEXT
CODE ENDS
END START
4.6
DATA SEGMENT
BUF DB 100 DUP(?)
N EQU $-BUF
LEN DW ?
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:CLD
MOV AX,DATA
MOV DS,AX
MOV CX,N
MOV DI,OFFSET BUF
MOV AL,‘A’
REPNE SCASB
DEC DI
LEA SI,BUF ;有这两句更好一点
SUB DI,SI ;有这两句更好一点
MOV LEN,DI
MOV AH,4CH
INT 21H
CODE ENDS
END START
4.8
4.9 (1) BX = 54CBH (2) BX = 54EBH (3) BX=0000H (4) 543BH
(5) BX=545CH (6)BX = 54A3H
4.11 PLENTH的值是34 ,其物理意义:变量P1和P2共占用了34字节的内存空间。
4.13 P151 冒泡排序法
4.14
data segment
buf db 11,-22,33,05,-7 (当然也可这样:buf db 10 dup(?))
N EQU $-buf
min db ?
max db ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,N-1 ;比较次数(找最大数和最小数)
mov si,0
mov al,buf[si] ;大数放入AL寄存器
mov bl,buf[si] ;小数放入BL寄存器
next: cmp al,buf[si+1]
jge sto1
mov al,buf[si+1]
sto1: cmp bl,[si+1]
jle sto2
mov bl,[si+1]
sto2: inc si
loop next
mov max,al ;最大数存入max单元 (这样语法上也是对的:mov [max],al)
mov min,bl ;最小数存入min单元
mov ah,4ch
int 21h
code ends
end start
4.20 data segment
NAME1 DB 9
DB ?
DB 9 DUP(?)
WEL DB 'Welcome ','$' ;Welcome后带一个空格
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
LEA DX,NAME1
MOV AH,0AH
INT 21H
MOV DI, NAME1[1]
MOV NAME1[DI+2],’$’ ;将所输入字符串后的第一个字节空间(存放回车符0DH)更换为‘$’字符
NEXT: MOV AH,01H
INT 16H
JZ NEXT ;键盘输入的ROM BIOS中断调用,判断有无按键
LEA DX,WEL
MOV AH,9
INT 21H ;中断调用,显示Welcome
LEA DX,NAME1[2]
MOV AH,9
INT 21H ;中断调用,显示输入的人名
MOV AH,4CH
INT 21H
code ends
end start
第六章
重点:
1. 中断源向CPU发中断请求信号的条件(p211)
2. Cpu响应中断的条件(p212)
3. 内部中断(p216)
4. 中断向量表(p218)
5. 可屏蔽中断的执行过程(p221)
6. 中断响应时序(p223)
第六章习题整理
6.4 答:三态门上有个使能端,只有在有效电平的时候才能与总线通信,在高阻态时输入输出相互隔断。有多个外设接口要挂到数据总线上,但是在某一时刻数据总线只能与一个外设端口通信。因此需要总线控制管理,访问到那个端口的使能端处于有效电平,其才能与总线通信。
6.9 答案参见 P213 CPU响应中断及处理过程
6.13 答案参见P217
6.19 答案参见 p221
第七章
1.8259A:作用
两种控制字的类型及差别
支持哪些优先级处理方式
知道特殊的屏蔽方式
2.8255: 连线
初始化
应用
补充题:为什么I/O接口芯片的地址线A0要和8086系统总线的A1相连?
参考答案要点:1)在8086系统中,数据总线为16位,而I/O接口芯片只有8条数据引线。因此,应让CPU和I/O接口芯片之间的数据传输通过数据总线的低8位进行。
2)将地址总线的A1和I/O接口芯片的A0端相连,A0浮空,从CPU的角度看,是用两个相邻的偶地址来作为I/O接口芯片的端口地址,同时仍满足接口内部对一奇一偶两个相邻端口地址的要求,从而可以保证用数据总线的低8位和I/O接口芯片交换数据。
3)这样的连接方式也和8088系统利用8位数据总线进行传输保持兼容。