第1+2周练习题

填空题

(一)中央处理单元CPU由运算器控制器寄存器 三部分组成。
(二)在计算机中,通常运算器和 控制器 是核心部件,合称为中央处理单元CPU。
(三)某CPU的字长为4,假设该CPU执行一次加法运算需要1ns,执行两个double 类型的数(假设double类型的变量占8个字节)相加时需要16 ns。

CPU的字长为4=1次4位累加耗时1ns
1字节=8位 8字节=64位 64/4=16ns

(四)如果某CPU处理器的频率为100Hz,则该CPU做一次运算需要的时间为0.01秒。

T=1/f=0.01s
⚠注意:s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒),
其中:1s=1000ms,1 ms=1000μs,1μs=1000ns

(五)摩尔定律指出,每18个月集成电路的性能将提高一倍,而其价格将降低一半。
(六)某微机具有16M字节的内存空间,其CPU的地址总线至少应有24条。

16=2^4
M=2^20
4+20=24

(七)CPU芯片可以与它外部的两类芯片进行交互信息,这两类芯片分别是内存储器芯片I/O接口芯片 ;这些芯片之间通过总线互相连接。
(八)总线信号分成三组,分别是数据总线、地址总线和控制总线。
(九)一条指令的执行包括三个步骤: 取指、译码、执行
(十)8086CPU可以从功能上分为 总线接口单元 部件和 处理单元 部件。
(十一)8086CPU内部的AX是一个 16 位寄存器,可以进一步将其分为高8位寄存器 AH 和低8位寄存器 AL
(十二)8086微处理器中,代码段中下一条要执行的指令由CS和 IP 寄存器指示。
(十三)十进制数274D对应的十六进制数为112H;十六进制数3CH对应的十进制数为60D;十六进制数1A78H对应的二进制数为0001 1010 0111 1000B;二进制数1001 0011 1100 0001B对应的十六进制数为93C1H,对应的十进制数为37825D
(十四)逻辑地址由段地址和 偏移地址 两部分组成;如果CPU内部的DS=1230H,执行MOV BL,[ 5 ]这条指令时,要用到的这个数据在内存中的物理地址是62300H
(十五)已知SP=2018H,执行PUSH AX后,SP寄存器的值是2016H
(十六)已知SP=2018H,执行POP AX后,SP寄存器的值是201AH

PUSH地址减小,POP地址增加,16进制借1位相当于借16

一个程序的执行需要先从磁盘调入到内存,然后当操作系统把CPU分配给该程序后,该程序才能得到运行。

计算题

将下列逻辑地址转换为物理地址。
21A0H:4800H
90H:1AH
0A100H :280EH
在这里插入图片描述

编程题

1、编写程序,判断AL中的值,当其大于9时,在显示器上显示’Y’;否则,在显示器上显示’N’。
注:(只写核心代码即可,需要先用cmp指令进行比较,然后用ja(满足above条件就跳转)je(满足equel条件就跳转)jb(满足below条件就跳转)等转移条件进行分支选择,还需要用到无条件跳转指令jmp来跳过一些指令)

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX

核心代码:

	;此处输入代码段代码
	MOV AL,?
	CMP AL,9   ;相当于返回AL-9
    JA LY      ;JA:如果AL>(Above)9跳到(Jump) LY,执行LY处代码
    MOV DL,'N' ;没跳则顺序往下执行
    MOV AH,2   ;输出函数1
    INT 21H    ;输出函数2
    JMP OVER   ;JMP:无条件跳转,跳过执行LY,直接到OVER,执行结束函数
LY:
	MOV DL,'Y' 
	MOV AH,2
	INT 21H   
OVER:  
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

2、编写程序,计算前10个数的和。
注:计算结果不用输出显示,只写核心代码即可。(需要参考循环程序的流程:先初始化;然后判断循环条件是否还成立(用cmp指令),如果成立,执行一遍循环体,改变循环条件,在用jmp跳转到条件判断处接着判断执行完上次循环体后循环条件是否还成立;如果循环条件不在成立,跳出循环。)

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX

核心代码:

	;此处输入代码段代码
	MOV BH,1   ;相当于C的cnt变量,给计数器赋初始值
    MOV DL,BH  ;相当于C的sum变量,不断累加
L0:	
    CMP BH,11  ;判断计数器是否够10
    JB AGAIN   ;没够跳转到AGAIN累加
    JMP OVER   
AGAIN:
	ADD BH,1
	ADD DL,BH
	JMP L0     ;累加完跳转到L0重新判断,构成循环
OVER:  
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

3、编写程序,计算前多少个数的累加和超过100。

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX

核心代码:

    ;此处输入代码段代码
L0:
    MOV BH,0  ;相当于C的cnt变量,给计数器赋初始值
    MOV DL,BH  ;相当于C的sum变量,不断累加
    CMP DL,100
    JB AGAIN
    JMP OVER
AGAIN:
	ADD BH,1
	ADD DL,BH
	JMP L0
OVER:  
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值