微机系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安电子科技大学
实验报告
实验一汇编语言编程实验
1 实验目的
(1)掌握汇编语言的编程方法
(2)掌握DOS功能调用的使用方法
(3)掌握汇编语言程序的调试运行过程
2 实验内容
(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。
(2) 在屏幕上显示自己的学号姓名信息。
(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。
(4)自主设计输入显示信息,完成编程与调试,演示实验结果。
3 实验结果
任务一
4 程序流程图
5 程序代码
任务一
DATA SEGMENT
NUMBER DB ' 03101214 SONG YUAN YUAN',0AH,0DH,'$'
string1 DB 0AH,0DH,' input q/Q to exit ',0AH,0DH,0AH,0DH,'NUMBER AND NAME:','$' string2 DB 0AH,0DH,'Input: $'
RESULT DB 0AH,0DH,'ASCII is :$'
SD DB ''
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET string1
MOV AH,09H
INT 21H
MOV DX,OFFSET NUMBER
INT 21H
C1: MOV DX,OFFSET string2
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,'Q'
JZ EXIT
CMP AL,'q'
JZ EXIT
MOV SD,AL
MOV DX ,OFFSET RESULT
MOV AH,09H
INT 21H
MOV SI,OFFSET SD
MOV AL,DS:[SI]
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
loop C1
EXIT: MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验二数码转换实验
.1 实验目的
(1)掌握不同进制数及编码相互转换的程序设计方法。
(2)掌握运算类指令编程及调试方法。
(3)掌握循环程序的设计方法。
2. 实验内容及说明
(1)重复从键盘输入不超过5位的十进制数,按回车键结束输入;
(2)将该十进制数转换成二进制数;结果以16进制数的形式显示在屏幕上;
(3)如果输入非数字字符,则报告出错信息,重新输入;
(4)直到输入“Q”或‘q’时程序运行结束。
键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。
任务二
流程图
任务二
; PAGE 60,132
;本实验将输入的ASCII码转换为二进制,要求输入位数小于5 DDATA SEGMENT
MES DB 0AH,0DH,'The ascii code of decimal code are: $' MSG1 DB 0AH,0DH,'exit,input: q/Q ',0AH,0DH,0AH,0DH,'$'
MSG2 DB 0AH,0DH,0AH,0DH,'Input: $'
MSG3 DB 0AH,0DH,'input error',0AH,0DH,'$'
BUF DB 30H,30H,30H,31H,35H
DB 10H DUP(0)
N DW 0
DDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DDATA
START: MOV AX,DDATA
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET BUF
CLC
MOV DX,OFFSET MSG1
MOV AH,09H
INT 21H
A1: MOV AH,1 ;接收键盘输入
INT 21H
INC N
STOSB ;将输入数据存放在BUF缓冲区中
CMP AL,'Q'
JZ EXIT
CMP AL,'q'
JZ EXIT
CMP AL,39H
JA ERROR
CMP AL,13
JNE A1
MOV CX,N
DEC CX
MOV BX,000AH
MOV SI,OFFSET BUF
MOV AH,0
MOV DX,0
LODSB
CMP CX,1
JE A3
SUB AL,30H ;将BUF中数据转换为二——十进制数
DEC CX
A2: IMUL BX
MOV DX,AX
LODSB
MOV AH,0
A3: SUB AL,30H
ADD AX,DX
LOOP A2
MOV [SI],AX
MOV DX,OFFSET MES
MOV AH,09H
INT 21H
INC SI ;显示高字节
CALL SHOW
DEC SI ;显示低字节
CALL SHOW
MOV DX,OFFSET MSG2
MOV AH,09H
INT 21H
MOV AX ,0
stosb
MOV AX ,0
MOV CX ,0
MOV BX ,0
MOV DX,0
MOV DI,OFFSET BUF
CLC
MOV N,0
LOOP A1
EXIT: MOV AX,4C00H
INT 21H
ERROR: MOV DX,OFFSET MSG3
MOV AH,09H
INT 21H
MOV DX,OFFSET MSG2
MOV AH,09H
INT 21H
JMP A1
SHOW PROC NEAR
MOV AL,DS:[SI]
AND AL,0F0H ;取高4位
MOV CL,4
SHR AL,CL
CMP AL,0AH ;是否是A以上的数
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
RET
SHOW ENDP
CODE ENDS
END START