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

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

[实验目的]

  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

[运行结果]

相关文章
|
8月前
|
数据安全/隐私保护
微机原理||十进制输入、数组中负数个数、字符串比较程序
微机原理||十进制输入、数组中负数个数、字符串比较程序
【Leetcode -500.键盘行 -504.七进制数】
【Leetcode -500.键盘行 -504.七进制数】
38 0
|
9月前
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
68 1
每日一题---输入一个数判断是否为素数
每日一题---输入一个数判断是否为素数
每日一题---输入一个数判断是否为素数
VB编程:统计字符个数-52
VB编程:统计字符个数-52
145 0
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
781 0
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
|
8月前
微机原理||数组排序、求最大数、负数个数程序
微机原理||数组排序、求最大数、负数个数程序

热门文章

最新文章