【微机原理与汇编语言】第一周作业

填空题:

(一)中央处理单元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,去做2
10+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用法
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值