学生实验报告

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

一、 实验目的

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

二、实验内容

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

三、实验仪器与设备

计算机,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或者循环除进制数即可。总的说来,做完这个实验后,对汇编语言有了更加深刻的理解,希望后面学的更好!