资源描述
实验一 顺序与分支程序设计
一 、实验目的
1)掌握顺序程序设计方法。
2)掌握分支程序的结构及分支程序的设计,调试方法。
3) 学习数据传送及算术和逻辑运算指令的用法。
4) 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
二、实验内容
1) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。
2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。
3) 在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
4) 要求同上,只是比较的数为有符号数。
5) 将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。
6) 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
7) 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
a) 当输入字符为A,则计算X+Y,并以十六进制形式显示出来
b) 当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来
c) 当输入字符为C,则计算X*Y,并以十六进制形式显示出来
d) 当输入字符为D,则计算X/Y,并以十六进制形式显示出来
三、源程序
EXAM1-1
DATA SEGMENT
BUF1 DW 9348H
BUF2 DW 4 DUP(0),0AH,0DH,‘$’
BUF3 DW 4 DUP(0),‘$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV AX,BUF1
ADD AX,0
JS NEXT
MOV BUF2,AX
MOV BUF3,AX
JMP EEE
NEXT:AND AX,7FFFH
NOT AX
MOV BUF2,AX
INC AX
MOV BUF3,AX
EEE: MOV CX,0004H
MOV DI,OFFSET BUF2
MOV DX,[DI]
ADD DI,03
BBB:MOV AX,DX
AND AX,000FH
CMP AL,0AH
JB QQQ
ADD AL,07H
QQQ:ADD AL,30H
MOV [DI],AL
DEC DI
PUSH CX
MOV CL,04H
SHR DX,CL
POP CX
LOOP BBB
MOV CX,0004H
MOV SI, OFFSET BUF3
MOV DX,[SI]
ADD SI,03H
CCC: MOV AX,DX
AND AX,000FH
CMP AL,0AH
JB DDD
ADD AL,07H
DDD:ADD AL,30H
MOV [SI],AL
DEC SI
PUSH CX
MOV CL,04H
SHR DX, CL
POP CX
LOOP CCC
MOV DX,OFFSET BUF2
MOV AH,09H
INT 21H
MOV DX,OFFSET BUF3
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
执行程序EXAM1-1·EXE,屏幕上显示结果:
ECB7
ECB8
EXAM1-2
DATA SEGMENT
A DB 34H,18H,2 DUP(0),’$’
B DB 56H,83H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,A
MOV BL,B
ADD AL,BL
MOV AH,A+1
MOV BH, B+1
ADC AH, BH
MOV A, AL
MOV A+1, AH
MOV CX, 0004H
MOV DI, OFFSET A
MOV DX, [ DI]
ADD DI,03
NEXT: MOV AX, DX
AND AX,000FH
CMP AL,0AH
JB QQQ
ADD AL, 07H
QQQ: ADD AL, 30H
MOV [DI], AL
DEC DI
PUSH CX
MOV CL, 04
SHR DX, CL
POP CX
LOOP NEXT
MOV DX, OFFSET A
MOV AH, 09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
执行程序EXAM1-2·EXE,屏幕上显示结果:
9B8A
EXAM1-3
STACK SEGMENT STACK
DB 1024 DUP(0)
STACK ENDS
DATA SEGMENT
BUF DB 70H,35H,1FH
MAX DB 2 DUP(?),‘$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: MOV AX, DATA
MOV DS, AX
MOV AL, BUF
CMP AL, BUF+1
JNB LP1
MOV AL, BUF+1
LP1: CMP AL, BUF+2
JAE LP2
MOV AL, BUF+2
LP2: MOV CX, 02H
MOV DI, OFFSET MAX
MOV DL, AL
INC DI
LP3: AND AL, 0FH
CMP AL, 0AH
JB LP4
ADD AL, 07H
LP4: ADD AL, 30H
MOV [DI],AL
DEC DI
PUSH CX
MOV CL, 04
SHR DL, CL
POP CX
MOV AL, DL
LOOP LP3
MOV DX, OFFSET MAX
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END BEGIN
执行程序EXAM1-3·EXE,屏幕上显示结果:70
EXAM1-4
STACK SEGMENT STACK
DB 1024 DUP(0)
STACK ENDS
DATA SEGMENT
BUF DB 98H,75H,32H
MAX DB 2 DUP(?),‘$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN:MOV AX, DATA
MOV DS, AX
MOV AL, BUF
CMP AL, BUF+1
JG LP1
XCHG AL, BUF+1
LP1: CMP AL, BUF+2
JG LP2
XCHG AL, BUF+2
LP2: MOV MAX, AL
MOV CX, 02H
MOV DI, OFFSET MAX
MOV DL, [DI]
INC DI
LP3: MOV AL, DL
AND AL, 0FH
CMP AL, 0AH
JB LP4
ADD AL, 07H
LP4: ADD AL, 30H
MOV [DI],AL
DEC DI
PUSH CX
MOV CL, 04
SHR DX, CL
POP CX
LOOP LP3
MOV DX, OFFSET MAX
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END BEGIN
执行程序EXAM1-4·EXE,屏幕上显示结果:
75
EXAM1-5
ORG 2000H
2000 BE0010 MOV SI, 1000
2003 BF0910 MOV DI, 1009
2006 8A14 MOV DL, [SI]
2008 80C200 ADD DL, 00
200B 7B0B JPO 2018
200D 8615 XCHG DL, [DI]
200F 8814 MOV [SI], DL
2011 4F DEC DI
2012 39FE CMP SI, DI
2014 7407 JE 201D
2016 EBF0 JMP 2008
2018 46 INC SI
2019 8A14 MOV DL, [SI]
201B EBF5 JMP 2012
201D F4 HLT
EXAM1-6
DATA SEGMENT
TABLE DW X3,X4,X5,X6
X DB 0
Y DB 0
BUF DB 2 DUP(0)
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV AH,01H
INT 21H
XOR AH,AH
CMP AL,33H
JB EX
CMP AL,37H
JAE EX
AND AL,0FH
MOV X,AL
SUB AL,3
SHL AL,1
MOV BX,OFFSET TABLE
ADD BX,AX
JMP [BX]
X3: MOV AL,X
INC AL
MUL X
JMP L9
X4: MOV AL,X
DEC AL
DEC AL
MUL X
JMP L9
X5: MOV AL,X
MUL X
JMP L9
X6: MOV AL,X
MUL X
ROR AX,1
JMP L9
EX: JMP L10
L9: XOR AH,AH
MOV X,AL
AND X,0FH
CMP X,09H
JLE AB1
ADD X,07H
AB1:ADD X,30H
MOV BL,X
MOV BUF,BL
AND AL,0F0H
MOV CL,4
ROR AL,CL
CMP AL,09H
JLE AB2
ADD AL,07H
AB2:ADD AL,30H
MOV BUF+1,AL
MOV AH,2
MOV DL,BUF+1
INT 21H
MOV DL,BUF
INT 21H
L10:MOV AH,4CH
INT 21H
CODE ENDS
END START
执行程序EXAM1-6·EXE,屏幕上显示结果:
3C
48
515
612
EXAM1-7
DATA SEGMENT
X DB 0
Y DB 0
CU DB 0
BUF DB 2 DUP(0)
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV AH,01H
INT 21H
MOV X,AL
MOV AH,01H
INT 21H
MOV Y,AL
CMP X,3AH
JB DEX
SUB X,07H
DEX:SUB X,30H
CMP Y,3AH
JB DEY
SUB Y,07H
DEY:SUB Y,30H
MOV AL,01H
INT 21H
CMP AL,41H
JZ JIA
CMP AL,42H
JZ FJIAN
CMP AL,43H
JZ CHENG
CMP AL,44H
JZ CHU
JMP JIESHU
JIA:MOV AL,X
ADD AL,Y
JMP PUT
FJIAN:
MOV AL,X
CMP AL,Y
JAE A1
MOV AL,Y
SUB AL,X
JMP PUT
A1: SUB AL,Y
JMP PUT
CHENG:
MOV AL,X
MUL Y
JMP PUT
CHU:XOR AH,AH
MOV AL,X
DIV Y
PUT:MOV CU,AL
AND CU,0FH
CMP CU,09H
JLE AB1
ADD CU,07H
AB1:ADD CU,30H
MOV BL,CU
MOV BUF,BL
AND AL,0F0H
MOV CL,4
ROR AL,CL
CMP AL,09H
JLE AB2
ADD AL,07H
AB2:ADD AL,30H
MOV BUF+1,AL
MOV AH,2
MOV DL,BUF+1
INT 21H
MOV DL,BUF
INT 21H
JIESHU:MOV AH,4CH
INT 21H
CODE ENDS
END START
执行程序EXAM1-7·EXE,若输入8 4屏幕上显示结果:
AC
B4
C16
D2
展开阅读全文