中国石油大学2016年微机原理实验程序(最新)终稿
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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