填空题:
(一)中央处理单元CPU由 运算器 、 控制器 、和 寄存器 三部分组成。
(二)在计算机中,通常运算器和 控制器 是核心部件,合称为中央处理单元CPU。
(三)某CPU的字长为4,假设该CPU执行一次加法运算需要1ns,执行两个double 类型的数(假设double类型的变量占8个字节)相加时需要 16 ns。
一次4位数累加1ns, 1字节8各位 ,8字节=64位,累加16次
字长:处理器每个时间单位处理的二进制数据位数(例如一次运算、传输的位数),指示处理器的数据处理能力
(四)如果某CPU处理器的频率为100Hz,则该CPU做一次运算需要的时间为0.01秒。
T=1/f=0.01s
注意:s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒),
其中:1s=1000ms,1 ms=1000μs,1μs=1000ns
(五)CPU芯片可以与它外部的两类芯片进行交互信息,这两类芯片分别是 内存储存器芯片 、 I/O接口芯片 ;这些芯片之间通过 总线 互相连接。
(六)一条指令的执行包括三个步骤: 取指 、译码、 执行 。其中“取指”指的是把指令从 内存器 中取到 CPU的寄存器 中。
(七)8086CPU内部的AX是一个 16 位寄存器,可以进一步将其分为高8位寄存
器 AH 和低8位寄存器 AL 。
(八)十进制数65对应的8位二进制数是0100 0001B,十进制数19对应的8位二进制数是 0001 0011B ,十进制数49对应的二进制数是 110001B 。
(九)8位二进制数0010 0011B对应的十进制数是35,8位二进制数0101 0001B对应的十进制数是 81 ,8位二进制数1000 0101B对应的十进制数是 133 。
(十)十进制数274D对应的十六进制数为___ 112H;十六进制数3CH对应的十进制数为__60 __。
编程题:
1、AX寄存器中存放了两位十进制数(如26),编写程序,将AX中的数显示到显示器上。
提示:用到的指令有mov、div、add和输出一个字符的功能函数mov ah,2 int 21h。
注意:
利用div指令去除10时,div指令执行之前必须对用到的寄存器设定好值;
div指令执行之后,除法的结果存在哪些寄存器中;
add指令用在哪里?
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 ax,26
mov bl,10
div bl
add al,48 ;商
mov dl,al
mov bh,ah ;输出ah中值发生变化 余数存到bh中
mov ah,2
int 21h
add bh,48
mov dl,bh
mov ah,2
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
2、从键盘上输入两个数字字符,算出对应的数值(例如输入‘2’、‘6’,计算出26)。
提示:用到的指令有输入一个字符的功能函数mov ah,1 int 21h和sub、mov、mul。
思路:输入字符‘2’,后,我们切出数值2,然后用010+2,得到结果2;
输入字符‘6’,后,我们切出数值6,然后用上次得到的结果2,去做210+6,得到结果26;
所以需要两次乘以10,第一次乘以10的结果需要暂存到别的寄存器中。
注意:从键盘上接收到的字符存在哪里了?
我们得到的是该字符的ASCII码值,如何得到数字字符对应的数值?
利用mul指令去乘以10时,mul指令执行之前必须对用到的寄存器设定好值;mul指令执行之后,乘法的结果存在哪个寄存器中;我们需要把这次乘法的结果暂存到别的寄存器中,为什么?
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 ah,1
int 21h
;scanf() 数据存入al中
sub al,48;转换为数字
mov bl,al ;保存第一位 2
mov ah,1
int 21h
sub al,48 ;第二位 6
xchg al,bl
; al-2 bl-6
mov cl,10
mul cl ;存ax =20
add al,bl;al=26
;add al,39 验证
mov dl,al
;输出 同上题
mov ah,0
mov bl,10
div bl
add al,48 ;商
mov dl,al
mov bh,ah ;输出ah中值发生变化 余数存到bh中
mov ah,2
int 21h
add bh,48
mov dl,bh
mov ah,2
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
- mul
mul是乘法指令,使用 mul 做乘法的时候:相乘的两个数:要么都是8位,要么都是16位。
8 位: AL中和 8位寄存器或内存字节单元中。
16 位: AX中和 16 位寄存器或内存字单元中。
结果
8位:AX中;
16位:DX(高位)和 AX(低位)中。
格式:mul 寄存器 或 mul 内存单元。
mul用法