汇编语言程序设计(二).doc
文本预览下载声明
武夷学院实验报告
课程名称:_汇编语言指令系统_ 项目名称:__汇编语言程序设计:
一 、实验目的
通过本次实验使学生熟悉汇编语言程序设计
硬件环境:微型计算机。
软件环境:Windows 操作系统,debug编程模式下。
实验内容
在8086系统下,编写完整程序,实现从键盘上输入两个4位十进制数,从显示器上显示这两个数
之和,例如输入“1234”、“5678”,应在显示器上显示“6912”。
在8086系统下,编写在长字符串L_STR中查找短字符串S_STR的完整程序,如果找到匹配的字符串,
则将字节变量RES置0FFH,否则置0。例如,在字符串“ABABCD”中可找到字符串“ABC”,则RES=0FFH。
二、实验过程记录:
1.编写程序,如下所示:
DATA SEGMENT
MSG1 DB Input the first number(ESC to exit):,$
MSG2 DB Input the second number(ESC to exit):,$
MSG3 DB 0AH,0DH,Input error!Input again:,$
DATA ENDS
OUTPUT MACRO ASC ;定义输出一个字符的宏
MOV DL, ASC
MOV AH, 2
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN: MOV AX, DATA
MOV DS, AX
AGAIN: LEA DX, MSG1
MOV AH, 9
INT 21H ;提示输入第一个数
CALL INPUT ;输入过程
PUSH BX
OUTPUT 0AH
OUTPUT 0DH
LEA DX, MSG2
MOV AH, 9
INT 21H ;提示输入第二个数
CALL INPUT ;输入过程
OUTPUT 0AH
OUTPUT 0DH
POP AX ;实现两个4位组合BCD码相加
ADD AL, BL ;低8位相加
DAA ;校正
MOV CL, AL ;保存至CL
ADC AH, BH ;高8位相加
MOV AL, AH ;移至AL
DAA ;校正
MOV AH, AL
MOV AL, CL
MOV BX, AX ;最后结果放在BX中
JNC NEXT
OUTPUT 1 ;如果相加结果大于9999,则显示进位“1”
NEXT: PUSH BX
MOV CL, 4
SHR BH, CL
ADD BH, 30H
OUTPUT BH ;显示千位数
POP BX
PUSH BX
AND BH, 0FH
ADD BH, 30H
OUTPUT BH ;显示百位数
POP BX
PUSH BX
MOV CL, 4
SHR BL, CL
ADD BL, 30H
OUTPUT BL ;显示十位数
POP BX
AND BL, 0FH
ADD BL, 30H
OUTPUT BL ;显示个位数
OUTPUT 0AH
OUTPUT 0DH
JMP AGAIN
INPUT PROC FAR ;输入一个4位十进制数的过程
BEGIN: MOV CX, 4
MOV BX, 0
L: SHL BX, 1
SHL BX, 1
SHL BX, 1
SHL BX, 1 ;BX的值乘以16
MOV AH, 1
INT 21H ;输入
CMP AL, 1BH ;ESC键退出
JZ DONE
CMP AL, 0
JB ERROR ;非数字,出错
CMP AL, 9
JA ERROR ;非数字,出错
SUB AL, 30H
XOR AH, AH
ADD BX, AX ;将输入加到BX中
LOOP L
RET
ERROR: LEA DX, MSG3
MOV AH, 9
INT 21H
JMP BEGIN
DONE: MOV AH, 4CH
INT 21H
INPUT ENDP
CODE ENDS
END MAIN
试验结果
编写程序,如下所示:
DATA SEGMENT
L_STR DB Dongzhiming
L_LTH DW $-L_STR
S_STR DB ming
S_LTH DW $-S_STR
RES DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, L_ST
显示全部