欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微机原理与接口技术实验:汇编综合练习

程序员文章站 2024-02-02 15:20:52
...

学生实验报告

实验课名称:微机原理与接口技术
实验项目名称:汇编综合练习
实验名称:汇编综合练习

一、 实验目的

利用所学汇编知识,编写程序,实现输入两个二位十六进制数,输出其十进制值

二、实验内容

从键盘上输入两个二位十六进制数,利用汇编程序,输出其二进制表示的值

三、实验仪器与设备

计算机,DOSbox虚拟机,外接设备

四、实验原理

汇编语言的基础知识

五、实验过程与代码

stack segment
db 10 dup(?)
stack ends

data segment
string_1 db 0ah,0dh,'please input a num: $'
string_2 db 0ah,0dh,'the result is: $'
result db 0,0,0
data ends

code segment
assume cs:code,ss:stack,ds:data
start:
mov ax,data
mov ds,ax

mov cx,2

begin:
push cx
lea dx,string_1
mov ah,09h
int 21h


mov cx,2


xor bl,bl
input:
push cx
mov cl,4
mov ah,01h
int 21h
shl bl,cl
sub al,30h
cmp al,10
jb shuzi
sub al,27h


shuzi:
add bl,al
pop cx
loop input


mov bh,0
mov ax,bx

mov bl,10
mov cx,3
mov si,offset result+2

change:
div bl
mov [si],ah
dec si
mov ah,0
loop change

lea dx,string_2
mov ah,09h
int 21h

mov cx,3
mov si,offset result
output:
mov dl,[si]
add dl,30h
mov ah,02h
int 21h
inc si
loop output

pop cx
loop begin
mov ax,4c00h
int 21h

code ends
end start

六、实验结果与分析

        通过本次的汇编实验,对所学汇编知识有了更深的理解:loop用于循环,通过cx值确定循环次数,特别注意需要时刻对cx值进行保护,使用div时,特别注意被除数是16位还是32位,这对之后余数、商存放的位置有影响、dos的2号功能使用后,会把输出字符的ASCII值放入al中…计算机中存储数据的格式是以二进制存储的,debug汇编程序的时候,看到的都是十六进制,对于进制转换,我们可以利用AAA或者循环除进制数即可。总的说来,做完这个实验后,对汇编语言有了更加深刻的理解,希望后面学的更好!