微机原理||各种进制数显示程序

简介: 微机原理||各种进制数显示程序

[实验目的]

  1. 熟悉8086宏汇编实验环境,包括编辑(NotePad)、汇编MASM、链接LINK、调试debug32、运行等开发环境的使用,学习简单程序调试运行。
  2. 熟悉微机原理,掌握8086/8088CPU内部结构,熟悉8086/8088指令系统。
  3. 熟练掌握汇编语言程序设计方法,通过本实验初步培养计算机逻辑解题能力,熟练掌握数制及其转换规则;掌握基本输入输出中断调用的方法。

[实验要求]

1.在规定期限独立完成实验内容

2.提交实验报告(电子版)

3.提交相应源程序文件

[实验内容]

  1. 按要求编写以下程序:各种进制数显示程序
  2. 1.在屏幕上显示输出一个二进制数
(1)输出一个二进制数
data    segment
dat1    dw      1024h
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
        mov bx,dat1
        mov cx,16
 
t:      rol bx,1
        mov dl,bl
        and dl,01h
        add dl,30h
        mov ah,2
        int 21h
        loop t
 
        mov ah,4ch
        int 21h
code ends
     end begin
  1. 2.在屏幕上显示输出一个十六进制数
(2)输出一个十六进制数
data    segment
dat1    dw     1024h
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
        mov bx,dat1
        mov cx,4
 
t:      push cx
        mov cl,4
        rol bx,cl
        pop cx
        mov dl,bl
        and dl,0fh
        add dl,30h
        cmp dl,39h
        jbe print
        add dl,7
print:  mov ah,2
        int 21h
        loop t
 
        mov ah,4ch
        int 21h
code ends
     end begin
  1. 3.在屏幕上显示输出一个十进制数(无符号数显示)
(3)输出十进制
data    segment
dat1    dw     03fffh
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
        mov bx,dat1
        mov cx,10000
        call dec_div
        mov cx,1000
        call dec_div
        mov cx,100
        call dec_div
        mov cx,10
        call dec_div
        mov cx,1
        call dec_div
        
        mov ah,4ch
        int 21h
 
dec_div proc
        mov dx,0
        mov ax,bx
        div cx
        mov bx,dx
        mov dl,al
        add dl,30h
        mov ah,2
        int 21h
        ret
dec_div endp
code ends
     end begin
  1. 4.在屏幕上将一个数以二进制、十六进制、十进制(无符号数)分别显示输出
4)以二进制、十六进制、十进制(无符号数)分别显示输出
data    segment
dat1    dw     0ffffh
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
    call bin_show
    call hex_show
    call dec_show
 
    mov ah,4ch
        int 21h
 
hex_show proc
        mov bx,dat1
        mov cx,4
 
t2:     push cx
        mov cl,4
        rol bx,cl
        pop cx
        mov dl,bl
        and dl,0fh
        add dl,30h
        cmp dl,39h
        jbe print
        add dl,7
print:  mov ah,2
        int 21h
        loop t2
    ret
hex_show endp
 
bin_show proc
        mov bx,dat1
        mov cx,16
 
t1:     rol bx,1
        mov dl,bl
        and dl,01h
        add dl,30h
        mov ah,2
        int 21h
        loop t1
    ret
bin_show endp
 
dec_show proc
        mov bx,dat1
        mov cx,10000
        call dec_div
        mov cx,1000
        call dec_div
        mov cx,100
        call dec_div
        mov cx,10
        call dec_div
        mov cx,1
        call dec_div
    ret
dec_show endp
        
    
 
dec_div proc
        mov dx,0
        mov ax,bx
        div cx
        mov bx,dx
        mov dl,al
        add dl,30h
        mov ah,2
        int 21h
        ret
dec_div endp
code ends
     end begin
  1. .同④,分行显示
5)以二进制、十六进制、十进制(无符号数)分行显示输出
data    segment
dat1    dw     0ffffh
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
    call bin_show
    call crlf
 
    call hex_show
    call crlf
 
    call dec_show
      call crlf
 
    mov ah,4ch
        int 21h
 
hex_show proc
        mov bx,dat1
        mov cx,4
 
t2:     push cx
        mov cl,4
        rol bx,cl
        pop cx
        mov dl,bl
        and dl,0fh
        add dl,30h
        cmp dl,39h
        jbe print
        add dl,7
print:  mov ah,2
        int 21h
        loop t2
    ret
hex_show endp
 
bin_show proc
        mov bx,dat1
        mov cx,16
 
t1:     rol bx,1
        mov dl,bl
        and dl,01h
        add dl,30h
        mov ah,2
        int 21h
        loop t1
    ret
bin_show endp
 
dec_show proc
        mov bx,dat1
        mov cx,10000
        call dec_div
        mov cx,1000
        call dec_div
        mov cx,100
        call dec_div
        mov cx,10
        call dec_div
        mov cx,1
        call dec_div
    ret
dec_show endp
        
    
 
dec_div proc
        mov dx,0
        mov ax,bx
        div cx
        mov bx,dx
        mov dl,al
        add dl,30h
        mov ah,2
        int 21h
        ret
dec_div endp
 
crlf  proc
        mov dl,0dh
    mov ah,2
    int 21h
    mov dl,0ah
    mov ah,2
    int 21h
    ret
crlf  endp
code ends
     end begin
  1. 6. 在屏幕上将一个数以二进制、十六进制、十进制(无符号数)分别显示输出,并统计其中二进制形式中“1”的个数并显示
6)以二进制、十六进制、十进制(无符号数)分别显示输出,并统计其中二进制形式中“1”的个数并显示
data    segment
dat1    dw     03fffh
cn      dw    ?
data    ends
 
code    segment
        assume cs:code,ds:data
begin:
        mov ax,data
        mov ds,ax
 
    mov bx,dat1
    call bin_show
    call crlf
 
    mov bx,dat1
    call hex_show
    call crlf
 
    mov bx,dat1
    call dec_show
      call crlf
 
    call count1
    mov bx,cn
    call dec_show
 
    mov ah,4ch
        int 21h
 
hex_show proc
        mov cx,4
 
t2:     push cx
        mov cl,4
        rol bx,cl
        pop cx
        mov dl,bl
        and dl,0fh
        add dl,30h
        cmp dl,39h
        jbe print
        add dl,7
print:  mov ah,2
        int 21h
        loop t2
    ret
hex_show endp
 
bin_show proc
        mov cx,16
 
t1:     rol bx,1
        mov dl,bl
        and dl,01h
        add dl,30h
        mov ah,2
        int 21h
        loop t1
    ret
bin_show endp
 
dec_show proc
        mov cx,10000
        call dec_div
        mov cx,1000
        call dec_div
        mov cx,100
        call dec_div
        mov cx,10
        call dec_div
        mov cx,1
        call dec_div
    ret
dec_show endp
        
    
 
dec_div proc
        mov dx,0
        mov ax,bx
        div cx
        mov bx,dx
        mov dl,al
        add dl,30h
        mov ah,2
        int 21h
        ret
dec_div endp
 
count1  proc
    mov dx,0
    mov bx,dat1
    mov cx,16
t:      shl bx,1
    jnc next
    inc dx
next:   loop t
    mov cn,dx
    ret
count1  endp
 
crlf  proc
        mov dl,0dh
    mov ah,2
    int 21h
    mov dl,0ah
    mov ah,2
    int 21h
    ret
crlf  endp
code ends
     end begin

[运行结果]

相关文章
|
6月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
6月前
|
机器学习/深度学习 编译器 C语言
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
108 0
|
1月前
通过屏幕我们输入三个数字,并找出最大的数
【10月更文挑战第15天】通过屏幕我们输入三个数字,并找出最大的数。
26 2
|
3月前
|
C# 图形学
小功能⭐️C#控制小数点后位数的方法
小功能⭐️C#控制小数点后位数的方法
|
5月前
|
数据安全/隐私保护
微机原理||十进制输入、数组中负数个数、字符串比较程序
微机原理||十进制输入、数组中负数个数、字符串比较程序
|
6月前
51.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果
51.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果
78 0
|
6月前
|
存储 C语言
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
68 0
|
6月前
|
容器
【PTA代码+图示】10进制转换成16进制 (堆栈操作)
【PTA代码+图示】10进制转换成16进制 (堆栈操作)
168 0