微机原理与接口技术实验报告

更新时间:2023-11-22 21:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 初级程序的编写与调试实验

一、实验目的

1、 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序.

2、 深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出. 3、 掌握各种寻址方法以及简单指令的执行过程.

二、实验内容

1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换.请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试. 程序:

MOV AX,3000 MOV BX,5000 MOV SP,2000 PUSH AX PUSH BX POP AX POP BX HLT

2、设DS=当前段地址,BX=0300H,SI=0002H请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入OAH,OBH,OCH,ODH,OEH.在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?

-E 300 0A,0B,0C,0D,0E -A

MOV BX,0300 MOV SI,0002 MOV AX,BX MOV AX,0304 MOV AX,[0304]

MOV AX,[BX]

MOV AX,0001[BX] MOV AX,[BX][SI]

MOV AX,0001[BX][SI] HLT

3、设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成. 程序:

MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV CL,1 SHL AX,CL HLT

实验四 加法及判断程序的编写与调试

一、实验目的

1、熟练掌握编写汇编语言源程序的基本方法和基本框架. 2、学会编写顺序结构,分支结构和循环结构的汇编程序 3、掌握程序中数据的产生与输入输出的方法. 二、实验内容

1、用汇编语言编写一个加法程序:

1325+9839

请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显示输出.

程序:

DATA SEGMENT DATA1 DB '5','2','3','1' DATA2 DB '9','3','8','9'

DATA ENDS

STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1

LEA DI,DATA2 MOV CX,4 MOV AH,0 NEXT:

MOV AL,[SI] ADC AL,[DI] ADC AL,AH MOV AH,0 AAA

ADD AL,30H MOV [DI],AL INC DI INC SI LOOP NEXT MOV CX,5 ADD AH,30H MOV [DI],AH NEXT1:MOV DL,[DI] MOV AH,02 INT 21H DEC DI

LOOP NEXT1 MOV AH,4CH INT 21H CODE ENDS END START

2、假设有一组数据:5,-4,0,3,100,-51,请编写一程序,判断:每个数是否大于

0?等于0?还是小于0?并输出其判断结果,即

即:

1 当X>0

Y= 0 当X=0 -1 当X<0

程序:

DATA SEGMENT

DATA1 DB 5, -4, 0 ,3,100,-51 STRING1 DB'Y=1','$' STRING2 DB'Y=0','$' STRING3 DB'Y=-1','$' DATA ENDS

STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK

MOV SS,AX LEA SI,DATA1 MOV CX,6 NEXT: MOV AL,[SI]

CMP AL,0 JZ NEXT1 JNS NEXT2 JS NEXT3

NEXT1: MOV DX,OFFSET STRING2 MOV AH,09H INT 21H

JMP NEXT4

NEXT2: MOV DX,OFFSET STRING1 MOV AH,09H INT 21H

JMP NEXT4

NEXT3: MOV DX,OFFSET STRING3 MOV AH,09H INT 21H

NEXT4: INC SI

LOOP NEXT

MOV AH,4CH INT 21H CODE ENDS END START

实验五大小写字母互换程序的编写与调试

一、实验目的

进一步熟悉汇编语言源程序的编写方法及宏汇编程序的使用方法 二、实验内容

设内存数据区有大小写混合英文ASCII码字母:‘AbCdEfGChinaAgriculturalUniversity’。分别将其转换成全部大写和全部小写,并在屏幕显示这3种字母。字母显示用DOS功能9号调用

程序:

DATA SEGMENT

ZM DB 'AbDdEfGChinaAgriculturalUniversitY',0DH,0AH,'$' DATA ENDS

STACK SEGMENT PARA STACK 'STACK' DB 100 DUP (?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV CX,22H LEA DI,ZM LEA DX,ZM MOV AH,9 INT 21H

XX0: MOV AL,[DI] CMP AL,'Z'

JA XX1

ADD BYTE PTR [DI],20H XX1: INC DI LOOP XX0 LEA DX,ZM MOV AH,9 INT 21H LEA DI,ZM MOV CX,22H DX0: MOV AL,[DI] CMP AL,'a'

JB DX1 SUB BYTE PTR [DI],20H DX1: INC DI LOOP DX0 LEA DX,ZM MOV AH,9

INT 21H

MOV AH,4CH INT 21H CODE ENDS END START

本文来源:https://www.bwwdw.com/article/e1gv.html

Top