6、[+42]原=00101010B=[+42]反=[+42]补
[-42]原=10101010B
[-42]反=11010101B
[-42]补=11010110B
[+85]原=01010101B=[+85]反=[+85]补
[-85]原=11010101B
[-85]反=10101010B
[-85]补=10101011B
10、微型计算机基本结构框图
微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。
存储器用来存放数据和指令,其内容以二进制表示。每个单元可存8位(1字节)二进制信息。
输入——将原始数据和程序传送到计算机。
输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。
接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。
总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。
13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。8086有16根数据线,80386有32根数据线。
第二章
1、8086外部有16根数据总线,可并行传送16位数据;
具有20根地址总线,能直接寻址220=1MB的内存空间;
用低16位地址线访问I/O端口,可访问216=K个I/O端口。
另外,8088只有8根数据总线
2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU)
BIU负责CPU与内存和I/O端口间的数据交换:
BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。
执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。
执行完指令后,可通过BIU将数据传送到内存或I/O端口中。
指令执行单元(Execution Unit,EU)
EU负责执行指令:
它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。
EU的算术逻辑单元(Arithmetic Logic Unit,ALU)完成各种运算。
6、见书P28-29。
7.(1) 1200:3500H=1200H×16+3500H=15500H
(2) FF00:0458H=FF00H×16+0458H=FF458H
(3) 3A60:0100H=3A80H×16+0100H=3A700H
8、(1)段起始地址 1200H×16=12000H,结束地址 1200H×16+FFFFH=21FFFH
(2)段起始地址 3F05H×16=3F050H,结束地址 3F05H×16+FFFFH=4F04FH
(3)段起始地址 0FFEH×16=0FFE0H,结束地址 0FFEH×16+FFFFH=1FFD0H
9、3456H×16+0210H=34770H
11、堆栈地址范围:2000:0000H~2000H(0300H-1),即20000H~202FFH。执行两条PUSH指令后,SS:SP=2000:02FCH,再执行1条PUSH指令后,SS:SP=2000:02FAH。
12、(2000H)=3AH, (2001H)=28H, (2002H)=56H, (2003H)=4FH
从2000H单元取出一个字数据需要1次操作,数据是 283AH;
从2001H单元取出一个字数据需要2次操作,数据是 5628H;
17、CPU读写一次存储器或I/O端口的时间叫总线周期。1个总线周期需要4个系统时钟周期(T1~T4)。8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。
第三章
1、源操作数的寻址方式:
(1)(2)(6)立即寻址 (3)寄存器间接寻址 (4)(5)(8)(10)寄存器寻址
(7)基址变址寻址 (9)直接寻址
2、DS=1000H, BX=0200H, SI=0002H
(10200H~10205H)依次存有10H,2AH,3CH,46H,59H,6BH
(1)MOV AX, 0200H ; AX=0200
(2)MOV AX, [200H]
物理地址=1000H×10H+0200H=10200H, AX=2A10H
(3)MOV AX, BX ; AX=0200H
(4)MOV AX , 3[BX]
物理地址=1000H×10H +0200H+3H=10203H, AX=5946H
(5)MOV AX , [BX+SI]
物理地址=1000H×10H+0200H +2H=10202H , AX=463CH
(6)MOV AX, 2[BX+SI]
物理地址=1000H×10H +200H+2H+2H=10204H , AX=6B59H
3、DS=1000H, ES=2000H, SS=3500H,
SI=00A0H, DI=0024H, BX=0100H, BP=0200H, VAL=0030H
(1)MOV AX, [100H] 直接寻址方式,10100H
物理地址=DS×10H+100H=10000H+0100H=10100H
(2)MOV AX, VAL 直接寻址方式,10030H
物理地址=DS×10H+VAL=10000H+0030H=10030H
(3)MOV AX, [BX] 寄存器间接寻址,10100H
物理地址=DS×10H+BX=10000H+0100H=10100H
(4)MOV AX, ES:[BX] 寄存器间接寻址,20100H
物理地址=ES×10H+BX=20000H+0100H=20100H
(5)MOV AX, [SI] 寄存器间接寻址,100A0H
物理地址=DS×10H+SI=10000H+00A0H=100A0H
(6)MOV AX, [BX+10H] 寄存器相对寻址,10110H
物理地址=DS×10H+BX+10H=10000H+0100H+10H=10110H
(7)MOV AX, [BP] 寄存器间接寻址,35200H
物理地址=SS×10H+BP=35000H+0200H=35200H
(8)MOV AX, VAL[BP][SI] 相对基址变址寻址,352D0H
物理地址=SS×10H+BP+SI+VAL
=35000H+0200H+00A0H+0030H=352D0H
(9)MOV AX, VAL[BX][DI] 相对基址变址寻址,10154H
物理地址=DS×10H+BX+DI+VAL
=10000H+0100H+0024H+0030H=10154H
(10)MOV AX, [BP][DI] 基址变址寻址,35224H
物理地址=SS×10H+BP+DI=35000H+0200H+0024H=35224H
5、
6、(1)MOV DL, AX
错,寄存器寻址方式中,目的操作数与源操作数长度必须一致
(2)MOV 8650H, AX
错,目的操作数不可以是立即数
(3)MOV DS, 0200H
错,MOV指令不允许将立即数传入段寄存器
(4)MOV [BX], [1200H]
错, MOV指令的两个操作数不能同时为存储器
(5)MOV IP, 0FFH
错, IP不能作为MOV指令的目的操作数
(6)MOV [BX+SI+3], IP
错, IP不能作为MOV指令的源操作数
(7)MOV AX, [BX][BP]
错,BX与BP不可以同时出现在源操作数当中
(8)MOV AL, ES:[BP] 对
(9)MOV DL, [SI][DI]
错,SI与DI是两个变址寄存器,不可以同时出现在源操作数中。
(10)MOV AX, OFFSET 0A20H
错,OFFSET后面跟的应该是符号地址,再把符号地址的值作为操作数。
(11)MOV AL, OFFSET TABLE
错,TABLE的偏移地址是16位,目的与源长度不一致
(12)XCHG AL, 50H
错,交换指令可以在寄存器之间,寄存器和存储器之间进行,不可以是立即数。
(13)IN BL, 05H
错, BL不能作为IN指令的目的操作数,只能用AL或AX
(14)OUT AL, 0FFEH
错,端口地址0FFEH>FFH, 应用DX间接寻址, 同时源操作数和目标操作数的位置颠倒了,应改为OUT DX, AL。
8、
10、AX=2508H,BX=0F36H,CX=0004H,DX=18H
(1)AND AH, CL
AH=04H,CF=0;(0010 0101B与0000 0100B)
(2)OR BL, 30H
BL=36H,CF=0;(0011 0110B或0011 0000B)
(3)NOT AX
AX=DAF7H,CF无影响;(0010 0101 0000 1000B取反后1101 1010 1111 0111B)
(4)XOR CX, 0FFF0H
CX=FFF4H,CF=0;(0000 0000 0000 0100B和1111 1111 1111 0000B异或后1111 1111 1111 0100B)
(5)TEST DH, 0FH
TEST操作并不修改结果,CF=0;
(6)CMP CX, 00H
CMP操作并不修改结果,CF=0;
(7)SHR DX, CL
DX=0186H,CF=0;
(8)SAR AL, 1
AH=04H,CF=0;
(9)SHL BH, CL
BH=F0H,CF=0;
(10)SAL AX, 1
AX=4A10H,CF=0;( 0010 0101 0000 1000B 左移)
(11)RCL BX, 1
若程序执行之前CF=0,BX=1E6CH,CF=0;若程序执行之前CF=1,BX=1E6DH,CF=0。
(12)ROR DX, CL
DX=4186H,CF=0。
12、
14、 (1)LOOP NEXT
(2)LOOPE NEXT
(3)LOOPNE NEXT
START: MOV AX, 01H
MOV BX, 02H
MOV DX, 03H
MOV CX, 04H
NEXT: INC AX
ADD BX, AX
SHR DX, 1
( )
程序运行前 DX=00000011B
(1)AX=0005H BX=0010H CX=0000H DX=0000H
(2)AX=0002H BX=0004H CX=0003H DX=0001H
(3)AX=0003H BX=0007H CX=0002H DX=0000H
15、ARRAY DB 78H,67H,75H,69H,70H,74H,71H
NEW DB 7 DUP(?)
MOV CX, 0007H
MOV BX, 0000H
NEXT: MOV AL, ARRAY[BX]
ADD AL, 5
DAA
MOV NEW[BX],AL
INC BX
LOOP NEXT
HLT
第四章 (请主动识别程序中的标点符号为英文输入模式下的)
2.、指令语句由4部分组成,格式:
标号:指令助记符 操作数 ;注释
其中,指令助记符不可缺少。
伪指令语句由4部分组成,格式:
名字 伪指令指示符 操作数 ;注释
其中,伪指令指示符不可缺少。
3、伪指令语句在汇编过程中完成某些特定的功能,没有它们,汇编程序将无法完成汇编过程。和指令语句的主要区别是它没有对应的机器码,不能让CPU执行。
5、每条语句执行后的结果依次为:
AL=1 BL=2 CL=4 AH=0FFH BH=4 CH=1
6、
13、程序流程图如下:
汇编程序如下:
CODE SEGMENT
ASSUME CS:CODE
START: CMP BL,60 ;与60分比较
JB FAIL ;<60,转FAIL
CMP BL,85 ;≥60,与85分比较
JAE GOOD ;≥85,转GOOD
MOV DL,‘P’ ;其它,将DL←‘P’
JMP DISPLAY ;转显示程序
FAIL: MOV DL,‘F’ ;DL←‘F’
JMP DISPLAY ;转显示程序
GOOD: MOV DL,‘G’ ;AL←‘G’
DISPLAY: MOV AH ,02H ;显示存在DL中的字符
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
14、
DATA SEGMENT
TABLE DB 01H,80H,0F5H,32H,86H,90H
DB 74H,49H,0AFH,25H,40H,88H
PLUS DB 0 ;存正数个数
NEGT DB 0 ;存负数个数
ZERO DB 0 ;存0的个数
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV CX,12 ;数据总数
MOV BX,0 ;BX清0
AGAIN:
CMP TABLE[BX],0 ;取一个数与0比
JGE GRET_EQ ;≥0,转GRET_EQ
INC NEGT ;<0,负数个数加1
JMP NEXT ;往下执行
GRET-EQ:
JG P-INC ;>0,转P-INC
INC ZERO ;=0,零个数加1
JMP NEXT ;往下执行
P-INC:
INC PLUS ;正数个数加1
NEXT:
INC BX ;数据地址指针加1
DEC CX ;数据计数器减1
JNZ AGAIN ;未完,继续统计
CODE ENDS
END START
21、为便于理解, 假设存放在BX(需要注意的是要先将BX中的数据送给AX)中的16位二进制数的实际值为9346, 转换后应使CX=9346H (压缩BCD数)。
BIN_BCD PROC NEAR
MOV AX, BX
CMP AX,9999 ;AX>9999?
JBE TRAN ;小于,转
JMP EXIT ;大于,转退出
TRAN: SUB DX,DX ;DX初值清0
MOV CX,1000 ; CX 1000
DIV CX ;(DX,AX)/1000=9…346(AX=9, DX=346)
XCHG AX,DX ; 交换,使DX=9, AX=346(下次除法被除数)
MOV CL,4 ;第一个商9左移4次
SHL DX,CL ;DX=0090H
MOV CL,100 ;CL 100
DIV CL ;346/100=3…46, AL=3, AH=46
ADD DL,AL ;将第2次的商加到DL中, 使DX=0093H
MOV CL,4 ;DX左移4次
SHL DX,CL ;左移后DX=0930H
XCHG AL,AH ;交换, AX=0346H
SUB AH,AH ;AX=0046H,第2次余数做被除数
MOV CL,10 ;CL 10
DIV CL ;AX/10=4…6, 结果AL=4,AH=6
ADD DL,AL ;4加到DL上,使DX=0934H
MOV CL,4
SHL DX,CL ;DX左移4次, DX=9340H
ADD DL,AH ;最后一次余数加到DX上, DX=9346H
MOV CX,DX ;最后结果:AX=9346H
EXIT: RET
BIN_BCD ENDP
第五章
1、内存分为随机存取存储器RAM和只读存储器ROM。RAM的特点:可随机写入和读出,访问速度快,但断电后内容会全部丢失,即具有易失性。存放在ROM中的内容不会因断电而丢失,它属于非易失性存储器,计算机只能对ROM读出不能进行写入,改写要用专门的编程器。
3、静态RAM电路结构复杂,集成度较低,功耗也大,但存取速度很快,访问时间可小于10ns。不适合做容量很大的内存,主要用作高速缓存(Cache),并用于网络服务器、路由器和交换机等高速网络设施上。
动态RAM电路简单,但存取速度慢,电容上存储的信息会丢失,需要刷新。容量大,价格便宜,PC机上的内存都采用DRAM,而且做成内存条,便于扩充内存容量。还被用在其它需要大量存储的场合,如激光打印机、高清晰数字电视等。
4、动态RAM存储单元由1个MOS管和1个小电容C构成。C充满电荷便保存了信息1,无电荷为0。电容C上保存的电荷会逐渐泄漏,使信息丢失。为此,要在DRAM使用过程中及时向保存1的那些存储单元补充电荷,也就是对C进行预充电,这一过程称为DRAM的刷新(refresh)。读操作是读出电容C上的电荷转换成的0或1的逻辑电平,并非对电容C进行充电。
15、8,A10~A0,A19~A11,4
16、
芯片 | A19~A16 | A15~A13 | A12~A0 | 一个可用的芯片地址范围 |
1 | XX10 | 000 | 全0~全1 | 20000H~21FFFH |
2 | XX10 | 001 | 全0~全1 | 22000H~23FFFH |
3 | XX10 | 010 | 全0~全1 | 24000H~25FFFH |
4 | XX10 | 011 | 全0~全1 | 26000H~27FFFH |
芯片 | A19~A16 | A15~A13 | A12~A0 | 一个可用的芯片地址范围 |
1 | X001 | 100 | 全0~全1 | 18000H~19FFFH |
2 | X001 | 101 | 全0~全1 | 1A000H~1BFFFH |
3 | X001 | 110 | 全0~全1 | 1C000H~1DFFFH |
4 | X001 | 111 | 全0~全1 | 1E000H~1FFFFH |
1、答:CPU和外设之间的信息交换存在以下一些问题:速度不匹配;信号电平不匹配;信号格式不匹配;时序不匹配。
I/O接口电路是专门为解决CPU与外设之间的不匹配、不能协调工作而设置的,处于总线和外设之间,一般应具有以下基本功能:⑴设置数据缓冲以解决两者速度差异所带来的不协调问题;⑵设置信号电平转换电路,如可采用MC1488、MC14、MAX232、MZX233芯片来实现电平转换。⑶设置信息转换逻辑,如模拟量必须经 A/D变换成数字量后,才能送到计算机去处理,而计算机送出的数字信号也必须经D/A变成模拟信号后,才能驱动某些外设工作。 ⑷设置时序控制电路;⑸提供地址译码电路。
2、CPU与外设通信时,传送的信息主要包括数据信息、状态信息和控制信息。在接口电路中,这些信息分别进入不同的寄存器,通常将这些寄存器和它们的控制逻辑统称为I/O端口,CPU可对端口中的信息直接进行读写。在一般的接口电路中都要设置以下几种端口:
⑴数据端口:用来存放外设送往CPU的数据以及CPU要输出到外设去的数据。数据端口主要起数据缓冲的作用。
⑵状态端口:主要用来指示外设的当前状态。每种状态用1位表示,每个外设可以有几个状态位,它们可由CPU读取,以测试或检查外设的状态,决定程序的流程。
⑶命令端口:也称为控制端口,它用来存放CPU向接口发出的各种命令和控制字,以便控制接口或设备的动作。
I/O端口的编址方式有两种:分别称为存储器映象寻址方式和I/O指令寻址方式。
存储器映象寻址方式:把系统中的每个I/O端口都看作一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令均可用来访问I/O端口,不用设置专门的I/O指令。
I/O指令寻址方式:对系统中的输入输出端口地址单独编址,构成一个I/O空间,它们不占用存储空间,而是用专门的IN指令和OUT指令来访问这种具有地址空间的端口。
8086/8088CPU采用I/O指令寻址方式,用地址总线的低16位(A15~A0)来寻址I/O端口,最多可以访问216=65536个输入或输出端口。
7、端口A:包含1个8位的数据输出锁存器/缓冲器,1个8位的数据输入锁存器。A口作输入或输出时数据均能锁存。
端口B:包含1个8位的数据输入/输出锁存器/缓冲器,1个8位的数据输入缓冲器。
端口C:包含1个8位的数据输出锁存器/缓冲器,1个8位的数据输入缓冲器,无输入锁存功能,
分成两个4位端口时,每个端口有1个4位的输出锁存器。
C口还可配合A口和B口工作,用来产生A口和B口的输出控制信号、输入到A口和B口的端口状态信号。
A组:管理A口和C口高,通过PA7~PA0以及PC7~PC4引脚与外部联络。
B组:管理B口和C口低,通过PB7~PB0以及PC3~PC0引脚与外部联络。
8、8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255A各端口的工作方式。这3种基本工作方式是:
方式0——基本输入输出方式:适用于不需要用应答信号的简单输入输出场合。这种方式A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。
方式1——选通输入输出方式:A口和B口作为数据口,均可工作于输入或输出方式。端口C的6根线用来产生或接受联络信号。
方式2——双向总线I/O方式:只有A口可以工作于这种方式。端口A工作于方式2时,端口C的5位(PC3~PC7)作A口的联络控制信号。
9、控制字寄存器。方式选择控制字的D7位总为1,而置位/复位控制字的D7位总为0。
10、0F8H, 0FAH, 0FCH, 0FEH
11、方式控制字 10001010B
MOV AL, 10001010B
OUT 86H, AL
15、A口地址 80H,B口地址 81H, 控制字地址 83H。A口方式0输入,B口方式0输出。控制字:10010000B
MOV DX,83H ;控制字寄存器
MOV AL,10010000B ;控制字
OUT DX,AL ;写入控制字
TEST_IT:
MOV DX,80H ;指向A口
IN AL,DX ;读入开关状态
NOT AL
MOV DX,81H ;指向B口
OUT DX,AL ;B口控制LED
CALL DELAY_20S ;调延时20s子程序
JMP TEST_IT ;延时20s再检测
DELAY_20S:… ;延时20s子程序
第七章
1、8253内部包含3个完全相同的计数器/定时器通道,即0~2计数通道,对3个通道的操作完全是的。8253的每个通道都有6种不同的工作方式。
方式0:计数结束中断,输出一个正跳变
方式1:可编程单稳输出,输出一个宽度可
调的负脉冲
方式2:比率发生器,输出序列负脉冲
方式3:方波发生器。方式2,3均可n分频
方式4:软件触发选通,写入n开始计数
方式5:硬件(GATE上升沿)触发选通
4、通道0 :方式3,初值 N0=2M/1K=2000=(2000H)BCD 控制字:00110111B
通道1: 方式2,初值N1=2M/500=4000=(4000H)BCD 控制字:01110101B
通道2: 方式1,初值N1=400/0.5=8000=(8000H)BCD 控制字:10110011B
0通道初始化:
MOV DX, 306H
MOV AL, 00110111B(37H) ;方式3,先读/写低8位后读/写低8位, BCD计数
OUT DX, AL
MOV DX, 300H
MOV AL, 00H ;初值低8位
OUT DX, AL
MOV AL, 20H ;初值高8位
OUT DX, AL
1通道初始化:
MOV DX, 306H
MOV AL, 01110101B (75H) ;方式2,先读/写低8位后读/写低8位, BCD计数
OUT DX, AL
MOV DX, 302H
MOV AL, 00H ;初值低8位
OUT DX, AL
MOV AL, 40H ;初值高8位
OUT DX, AL
2通道初始化:
MOV DX, 306H
MOV AL, 10110011B (B3H) ;方式1,先读/写低8位后读/写低8位,BCD计数
OUT DX, AL
MOV DX, 304H
MOV AL, 00H ;初值低8位
OUT DX, AL
MOV AL, 80H ;初值高8位
OUT DX, AL
第八章
1、计算机在执行正常程序过程中,暂时中止当前程序的运行,转到中断处理程序去处理临时发生的事件,处理完后又恢复原来程序的运行,这个过程称为中断(Interrupt)。中断功能:
使CPU和外设在部分时间内并行工作,大大提高CPU的利用率;
在实时控制系统中,现场数据可及时接收处理,避免丢失;
故障的处理,如电源掉电、奇偶校验错、运算中溢出错等;
利用中断指令,直接调用大量系统已编写好的中断服务程序,实现对硬件的控制。
2、引起中断的原因或能发出中断请求的来源称为中断源。
8086有两种中断源,中断分为两大类:
1)外部中断或硬件中断,从不可屏蔽中断引脚NMI和可屏蔽中断引脚INTR引入;
2)内部中断或软件中断,是为解决CPU运行过程中出现的一些意外事件或便于程序调试而设置的。
4、中断向量表用来存放中断服务程序的入口地址。
8086可处理256(0~FFH)类中断,每类中断有一个入口地址(中断向量),包含CS和IP,共4个字节。因此存储256个地址,需要占用1K字节,它们位于内存00000~003FFH的区域中。
6、
7、中断类型号 n=40H/4=10H,中断服务程序起始地址是 CS:IP=D169: 240BH
第九章
1、并行通信时,数据各位同时传送。这种方式传输数据的速度快,但使用的通信线多,如果要并行传送8位数据,需要用8根数据线,另外还要加上一些控制信号线。
随着传输距离的增加,通信线成本增加将成为突出的问题,而且传输的可靠性随着距离的增加而下降。 因此并行通信适用于近距离传送数据的场合。
串行通信时,要传送的数据或信息必须按一定的格式编码,然后在单根线上,按位顺序传送。发送数据时,逐位发送完一个字符后再发第二个。接收数据时,逐位接收信息,再把它们拼成一个字符,送给CPU作进一步处理。串行通信具通信线少和传送距离远等优点。
2、单工 (Simplex): 单向通信,A只能发送数据,B只能接收数据。半双工(Half Duplex): 双向传输,但只有一根传输线,在同一时间只能A->B,或A<-B。全双工(Full Duplex): 有两个通路,双方可同时发送和接收数据。
6、1/2400 S, 10/2400=1/240 S
9、RS-232C逻辑高电平:有负载时-3V~-15V,无负载时-25V。
逻辑低电平:有负载时+3V~+15V,无负载时+25V。
通常用±12V作RS-232C电平。TTL电平: 0~0.8V为逻辑0,+2V~+5V为逻辑1。显然与RS-232C电平不匹配,必须设计专门的电平转换电路。RS-232C串行接口规定使用25芯或9芯D型插头插座连接。
第十章
2、采样:按相等的时间间隔t,从模拟信号上截取一个个离散的信号瞬时值。采样率fS:离散量出现的重复频率。
量化:采集下来的信号瞬时值的数字表示。量化只能达到一定精度。量化单位q:一个N位ADC,量程分成层,它能分辨的最小的量化信号电平即量化单位。
12位D/A转换器的分辨率是12。
3、
(1)BEGIN:MOV AL,00H ;下限值
UP: MOV DX,220H
OUT DX,AL ;D/A转换
INC AL ;数值增1
CMP AL,0FFH ;超过上限了吗?
JNZ UP ;没有,继续转换
DOWN: MOV DX,220H
OUT DX,AL ;D/A转换
DEC AL ;数值减1
CMP AL,00H ;低于下限了吗?
JNZ DOWN ;没有
JMP BEGIN ;低于,转下个周期
4、
设下限为1.2V,上限为4V,端口地址为300H和301H。产生锯齿波程序如下:(注意双缓冲方式)
BEGIN: MOV AL, 3CH ;下限
MOV DX, 300H ;指向D/A输入寄存器
AGAIN:INC AL
OUT DX, AL ;数据打入输入寄存器
INC DX ; 指向DAC寄存器
OUT DX, AL ; 选通DAC寄存器启动D/A转换
CMP AL, 0CDH ;超过上限了吗?
JNZ AGAIN ;没有超过,继续
JMP BEGIN ;否则,重新开始