微机系统实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档