微机作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3) AX=873CH
(4) AX=873CH (5) AX=CCE6H=2345H-565FH [873CH]物理地址A32BC (6) AX=2345H AX不变
3.若DS=2978H, CX=6572H,BX=3AE4H,求指令MOV [BX+5],CX内存操作数 的逻辑地址?物理地址?偏移地址?段地址?
6. (书114页习题2.13)试编程将内存从4000H到4BFFFH的每个单元中均写入55H,并再逐个读出比较, 看写入的与读出的确是否一致.若全对,则置AL为7EH;若有错,置AL为81H.
next1: next2: done:
mov cx,0C000H ;设置循环次数4BFFFH- 40000H+1
2-作业答案:
1.8086CPU访问接口用多少位地址线?可直接寻址多少内存空间?(16 ;1MB) 2.总线信号中决定系统直接寻址存储器范围的是什么总线? (地址总线AB) 3.8086CPU的IP、ES、CL、BH、DX、SS 、SI、SP、AH、CS这些寄存
器中,哪些是8位寄存器?( CL BH AH) 段寄存器?(ES SS CS) 16位通用寄存器?(DX SI SP) 堆栈指针寄存器? (SP) 4.请将下述逻辑地址转化为物理地址 (答案:物理地址皆为3017AH)
3.编程实现将stt开始的9个无符号数的和放至dtt开始的两个存储单元中
4.将题3写出完整的汇编语言源程序(简化段定义格式)
7-作业
1.(书114页2.5题)试编程将BUFFER中的一个8位二进制转化为ASCII码,并按位数高低顺序 存放在ANSWER之下.注:8位二进制数为2位十六进制数,1位十六进制数转换为1位 ASCII码
inc
si
mov
al,BUFFER ;取1个字节需转换的二进制数的高4位
push
cx
mov
cl,4
shr
al,cl
pop
cx
call
HTOASC
;调16进制数转换成ASCC码子程序
mov hlt;
[si],al
;[si]←ASCII码 1位16进制数转换成1位ASCII 码子程序
HTOASC proc
9-作业
1.书237页习题1(内存RAM区改为20000H~9FFFFH) 2.书237页习题7 3.书237页习题8(图4.71的A17A16改接与门) 4.若用6264SRAM芯片(8K×8位)组成128KB的
存储器系统,问:(电子科大考研题)
(1)需要多少片6264芯片? (2)约定该存储器模块的起始地址为40000H,则该存 储器模块的末地址为多少?
需16片 2164 DRAM(书198页) 64K×1b
需64片 21256DRAM 256K×1b
需16片
2.书237页习题7 (内存地址范围40000H~BBFFFH) 分析
BBFFFH-40000H+1=7C000H字节=7C×212字节=496KB
2. 8086CPU预取指令时,其引脚上将产生______总线操作; 执 行 指 令 “ MOV AX , [BX]” 时 在 其 引 脚 上 将 产 生 ______总线操作;执行指令“MOV [BX],AX” 时在其 引脚上将产生______总线操作 (存储器读;存储器读; 存 储器写)
3. READY信号功能---书7页
mov cx,0C000H
;设置循环次数
mov si,0000H
;SI 指向数据段源缓冲区开始
mov al,81H
;设有错
mov ah,[si]
;循环体每次比较一个字节55h
cmp ah,55h
jnz done:
inc si ;SI和DI指向下一个单元
loop next2
mov al,7EH
hlt
7. (书115页习题2.19)试编程序,统计由40000H开始的16KB个单元中所存放的字 符”A”的个数,并将结果存放在DX中.
数据段主体部分
molt db
56H
ans dw
?
;代码段主体部分
方法一: 用乘法指令
;存放乘积
mov al,molt
mov bl,20 mul bl
; ax=al×bl=molt×20
mov ans,ax
方法二: 用加法指令循环结构实现乘法运算
mov cx,20
xor ax,0 ;实现ax=0,同时使CF=0
;BX←AX=4×AL
shl ax,1
;AX←8×AL
shl ax,1
;AX←16×AL
add ax,bx
;AX←16×AL+4×AL=20×AL
mov ans,ax
逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以2
sub ah,ah and ah,0
3.(书115页2.17题)在内存40000H开始的16KB个单元中存放一组数据,试编程顺 序将它们搬移到A0000H开始的顺序16KB个单元中.注: 40000H、A000H为物理地址
and al,0fh
cmp al,10
jc htoasc1
; <10,转htoasc1
add al,37h
; 是A ~ F,加37H
ret
; 子程序返回
2.(书114页2.7题)试编程将MOLT中的一个8位二进制乘以20,乘积放在 ANS单元及其下一个单元中 注:MOLT中的一个8位二进制数为无符号数
next1: next2:
cmp byte ptr [si],‘A’
;循环体每次比较一个字节‘A’
jnz next2
inc dx
inc si
;SI指向下一个单元
loop next1 ;循环条件判定:循环次数减1,不为0转移(循环)
done: hlt
6-作业
1.按照如下要求定义变量:
(1) my1b为字符串变量 Personal Computer (2) my7c表示字符串 Personal Computer (3) my3b为用十六进制数表示的字节变量 20 (4) my5w为20个未赋值的字变量 (5) my6c为100的常量
BUFFER DB
12H
ANSWER DB mov mov
2 DUP(?) ;存放ASCII
si,offset ANSWER ;si←存放转换成ASCII码的起始地址指针
al,BUFFER
;取1个字节需转换的二进制数
call mov
HTOASC [si],al
;调16进制数转换成ASCC码子程序 ;[si]←ASCII码
9-作业讲解
1.书237页习题1(内存RAM区改为20000H~9FFFFH) 分析
地址范围20000H~9FFFFH共有 9FFFFH-20000H+1=80000H字节=8×216字节=512K×8位 6264SRAM (13根地址线,8根数据线) 8K×8b
需64片 62256SRAM (15根地址线,8根数据线) 32K×8b
2.程序如下
count
db
80h, 'B',?
maxint
equ
04h
number
dw
maxint
array
db
maxint dup(3)
mov
cx,count
dec
byte ptr array-1
mov
bx,offset number
mov
ah,[bx+2]
mov
al,[bx-2]
hlt
问:程序执行后ax=?cx=?
mov al,0f1h ;al=0f1h
and al,0f1h ;al=30h
or al,0f1h ;al=fbh
xor al,0f1h ;al=cbh
not al
;al=c5h
3. 编程实现若寄存器BL中是小写字母‘a’,则令BH=0,否则令AH= -1
4. 将两有符号数AX、CX的较小值放DX
5.将DS:[1000H]开始的512字节的数据块传送至首地址为ES:[3000H] 的存储区域
(答案:逻辑地址=2978H:3AE9H 物理地址=2D269H 偏移地址=3AE9H 段地址=2978H)
4.判断哪些是非法指令
MOV [1000H],[2000H] (非法) MOV DS,2000H (非法) MOV DS,BX (合法)
PUSH AL (非法)
内存
78H 56H 5FH 34H 9AH 8EH 65H
mov cx,4000H
;设置循环次数16KB=4000H
mov si,0000H ;设置循环初值 DS:SI 指向数据段源缓冲区开始 ; 物理地址40000H= 段基地址(DS)4000H*16+偏移地址(SI)0000H
mov ax,4000H
mov ds,ax
mov dx,0
;dx存放结果,初值为0
mov cx,4000h ;设置循环次数16KB=4000H
;设置循环初值DS:[SI]指向数据段源缓冲区开始40000H=4000H×16+0
mov ax,4000h mov ds,ax mov si,0
;设置循环初值ES:[DI]指向附加段目的缓冲区开始A0000H=A000H×16+0
mov ax,0a000h mov es,ax mov di,0 again: mov al,[si] ;循环体:实现数据传送 mov es:[di],al ;每次传送一个字节 movsb inc si ; SI和DI指向下一个单元 inc di loop again ;循环条件判定-循环次数减1,不为0转移(循环)
1-作业答案:
1. 求(-122)10的原码、反码、补码? 原码=11111010B=FAH 反码=10000101B=85H 补码=10000110B=86H
2. 进行二进制数(B) 、十进制数(D) 、十六进制数(H)之间 的转换
(1) 01101001B= 69
H= 105 D
(2) 3FCAH= 0011111111001010 B
(1) MOV (2 )MOV (3) MOV (4 )MOV
AX, 2000H AX,[2000H] AX,[BX] AX,[BX+1]
(答案: (1)(2)指令寻址方式不同;(2)(4)指令执行后AX同)
2.设指令执行前DS=9AB8H, BX=873CH,AX=2345H, 分别单独执行下列指令后 AX=?
;设置循环初值:DS:SI 指向数据段源缓冲区开始40000H
mov ax,4000H
mov ds,ax
mov si,0000H
mov byte ptr [si],55H ;循环体每次写入一个字节55h
inc si ;SI指向下一个单元
loop next1
;循环条件判定:循环次数减1,不为0转移(循环)
① 3017H:000AH
② 3015H:002AH,
③ 3010H:007AH 5.若CS=2978H, IP=6572H,求当前指令内存的逻辑地址和物理地址?(答案:
逻辑地址 2978H:6572H 物理地址 2FCF2H)
3-作业答案:
1. 访 问 I/O 时 8086CPU 的 M/IO* 是 什 么 电 平 ? ( 低 电 平 ) 8086CPU的3个最基本的读写控制信号是M/IO*、______ 和______。 (WR*, RD*)
again: add al, molt
adc ah,0
loop again
mov ans,ax
作业2讲解(续)
方法三: 用移位指令实现乘法运算 20=16+4
mov al,molt
xor ah,ah
;实AX←2×AL
shl ax,1
;AX←4×AL
mov bx,ax
READY 就绪(准备好)
• 输入信号,存储器或I/O口就绪 • 高电平有效表示可以进行数据读写,利用该信号无效请求处理器等待
数据 • 处理器在进行读写前检测READY引脚
– 如果测到高有效,CPU直接进入下一步 – 如果测到无效,CPU将插入等待周期
4-作业答案:
1. (1)(2)指令有何区别?以下哪些指令执行后AX同?(设BX=1FFFH)
A32BEH A32BDH A32BCH A32BBH A32BAH A32B9H A32B8H
5-作业
1. 将DX.AX中32位数值除以2(右移一位)
SHR DX,1
RCR AX,1
2. 若指令执行前al=3ah,则分别执行
mov/and/or/xor al,0f1h指令及 not al指令后al=?
(1) MOV AX, [BX-1]
(2) LEA AX, [BX-1]
(3) MOV AX, BX
(4) MOV AX, 873CH
(5) SUB AX, [873CH]
(6) CMP AX,[873CH]
答案: (1) AX=5F34H [BX-1] 物理地址A32BB
(2) AX=873BH=BX-1
相关文档
最新文档