中国石油大学2016年微机原理实验程序(最新)终稿

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一寻址方式和汇编语言程序上机调试步骤

2、在数据段X单元存放有数据42,Y单元存放有数据-43,编程求这两数之和,并把结果存放到S单元。

data segment

x db 42

y db -43

s db 0

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov al,x

add al,y

mov s,al

loop: jmp loop

code ends

end start

3、已知数据段X单元存放的数据为10H,编程将该数据左移四位后存放到Y单元。data segment

x db 10h

y db 0h

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov cl,4h

mov al,x

rol ax,cl

mov y,al

loop: jmp loop

code ends

end start

实验二循环程序设计

1、编程将数据段从00H单元起始的十个单元赋值,值为00H~09H。

DATA SEGMENT DAT DB 10 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

MOV CX,10

MOV BX,0

LOOPER: MOV DAT[BX],BL

INC BX

LOOP LOOPER

LOOP:JMP LOOP

CODE ENDS

END START

2、现有两组数,X= -78, 127,-128, -125,88,Y=32, -43, 76, 95, 1。编程求两个数组之和,并将结果传送到S数组内,S (i)= X(i)+ Y(i)。

DATA SEGMENT

ORG 0000H

X DB -78,127,-128,-125,88

Y DB 32,-43,76,95,1

S DB 5 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

MOV CX,5

MOV BX,0

LOOPER :MOV AL,X[BX]

MOV DL,Y[BX]

ADD AL,DL

MOV S[BX],AL

INC BX

LOOP LOOPER

LOOP: JMP LOOP

CODE ENDS

END START

3、现有两个多位十进制数,X=5790123467,Y=1357902468。编程求X和Y之和,并将结果传送到S。

DATA SEGMENT

ORG 0000H

X DB 67H,34H,12H,90H,57H

Y DB 68H,24H,90H,57H,13H

S DB 5 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

MOV CX,5

MOV BX,0

LOOPER :MOV AL,X[BX]

MOV DL,Y[BX]

ADC AL,DL

DAA

MOV S[BX],AL

INC BX

LOOP LOOPER

LOOP: JMP LOOP

CODE ENDS

END START

实验三、子程序调用程序设计

1、用子程序调用(段内近程调用)编程,将以下十个数从小到大排序。

85,77,126,-1,-43, 37,-128, 11,-19,13。

DATA SEGMENT

X DB 85,77,126,-1,-43,37,-128,11,-19,13 COUNT EQU $-X

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

CALL SUB1

LOOP4:JMP LOOP4

SUB1 PROC NEAR

MOV SI,0

MOV CX,COUNT

DEC CX

LOOP1:MOV DX,CX

LOOP2:MOV AL,X[SI]

CMP AL,X[SI+1]

JL LOOP3

XCHG AL,X[SI+1]

MOV X[SI],AL

LOOP3:INC SI

LOOP LOOP2

MOV CX,DX

MOV SI,0

LOOP LOOP1

RET

SUB1 ENDP

CODE ENDS

END START

实验四、DOS系统功能调用

1、从键盘连续输入5个单个字符(如:1、

2、3、4、5),并将其压入堆栈,并显示。DATA SEGMENT

DUF DB 10 DUP(?)

DATA ENDS

STACK SEGMENT

SA DB 100 DUP(?)

TOP LABEL WORD

STACK ENDS

CODE SEGMENT

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

MOV SS,AX

MOV SP,OFFSET TOP

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV CX,05H

MOV AL,0

S1:MOV AH,1

INT 21H

PUSH AX

LOOP S1

MOV DL,0DH

MOV AH,02H

INT 21H

MOV DL,0AH

相关文档
最新文档