微机系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安电子科技大学
实验报告
实验一汇编语言编程实验
一、实验目的
(1)掌握汇编语言的编程方法
(2)掌握 DOS 功能调用的使用方法
(3)掌握汇编语言程序的调试运行过程
二、实验设备
PC 机一台。
三、实验内容
1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。
2. 在屏幕上显示自己的学号姓名信息。
3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。
4. 自主设计输入显示信息,完成编程与调试,演示实验结果。
四、实验源码
DA TA SEGMENT
DISCHA DB'WangHan 14030188004',0AH,0DH,'$'
TAB DB' ',0AH,0DH,'$'
BLANK DB' $'
DA TA ENDS
STACK SEGMENT
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK
START:
MOV AX,SEG DISCHA
MOV DS,AX
MOV DX,OFFSET DISCHA
MOV AH,09H
INT 21H
NEXT:
MOV AH,01H
INT 21H
CMP AL,'Q'
JE ENDSS
CMP AL,'q'
JE ENDSS
MOV BL,AL
MOV AX,SEG BLANK
MOV DS,AX
MOV DX,OFFSET BLANK
MOV AH,09H
INT 21H
MOV BH,0AH
MOV DL,BL
MOV CL,04H
SHR DL,CL
CMP DL,BH
JNL Q3
JMP Q2
Q1:
ADD DL,07H
Q2:
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
MOV DH,0FH
AND DL,DH
CMP DL,BH
JNL Q3
JMP Q4
Q3:
ADD DL,07H
Q4:
ADD DL,30H
MOV AH,02H
INT 21H
MOV AX,SEG TAB
MOV DS,AX
MOV DX,OFFSET TAB
MOV AH,09H
INT 21H
MOV CX,0009H
LOOP NEXT
ENDSS:
MOV AH,4CH
INT 21H
CODE ENDS
END START
五、程序流程图
如下图1.2所示
图1.2程序流程图
实验二数码转换实验
一、实验目的
1. 掌握不同进制数及编码相互转换的程序设计方法。
2. 掌握运算类指令编程及调试方法。
3. 掌握循环程序的设计方法。
二、实验设备
PC 机一台。
三、实验内容
1. 重复从键盘输入不超过5位的十进制数,按回车键结束输入;
2. 将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;
3. 如果输入非数字字符,则报告出错信息,重新输入;
4. 直到输入“Q”或‘q’时程序运行结束。
5. 键盘输入一字符串,以空格结束,统计其中数字字符的个数,在屏幕显示
四、实验原理
十进制数可以表示为:D
n *10n+D
n-1
*10n-1+…+D
*100=∑ D
i
*10i
其中D
i
代表十进制数1、2、3、…、9、0。
上式可以转换为:∑ D
i *10i=(((D
n
*10+D
n-1
)*10+ D
n-2
)*10+…+ D
1
)*10+ D
由上式可归纳出十进制数转换为二进制数的方法:从十进制数的最高位D
n
开始做乘10加次位的操作,依此类推,则可求出二进制数结果。
表2.1 数码转换关系对应表
五、实验源码
1、数制转换
assume cs:code
data segment
est db " Error:Input invalid",0ah,0dh,'$' data ends
stack segment
stk db 64 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,offset stk
mov ax,data
mov ds,ax
rf:
mov cx,5
mov ax,0
mov dx,0
mov si,0
mov di,0
rr:
mov ah,01h
int 21h
cmp al,0dh
je rend
cmp al,'q'
je qt
cmp al,'Q'
je qt
cmp al,'0'
jl err
cmp al,'9'
jg err
jmp cnt
err:
call perr
cnt:
sub al,'0'
mov bh,0
mov bl,al
mov ax,di
push bx
mov bx,10
mul bx