文档详情

汇编语言程序设计(二).doc

发布:2016-04-05约2.89千字共6页下载文档
文本预览下载声明
武夷学院实验报告 课程名称:_汇编语言指令系统_ 项目名称:__汇编语言程序设计: 一 、实验目的 通过本次实验使学生熟悉汇编语言程序设计 硬件环境:微型计算机。 软件环境: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
显示全部
相似文档