1、汇编语言程序设计实验1 简单汇编语言程序设计一、实验目的与要求1熟悉汇编语言运行、调试环境及方法。2掌握简单汇编语言程序的设计方法。3熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。二、实验容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的地址。试编写汇编程序,完成Z(W-X) 5-Y)(R+ 2) 。2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0位置1,否则将该位置0。三、实验报告要求1.程序算法流程图。2.源程序清单。3.程序
2、运行结果。4.调试过程中遇到的问题和解决的方法。实验2 分支及循环程序设计一、实验目的与要求1熟悉汇编语言运行、调试环境及方法。2掌握分支程序和循环程序的设计方法。3熟悉调试工具DEBUG,并运用DEBUG工具调试程序。二、实验容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定)三、实验报告要求1.程序算法流程图。2.源
3、程序清单。3.程序运行结果。4.调试过程中遇到的问题和解决的方法。实验3 子程序程序设计一、实验目的与要求1熟悉汇编语言运行、调试环境及方法。2掌握子程序的设计方法。3熟悉调试工具DEBUG,并运用DEBUG工具调试程序。二、实验容根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。1.编程以十进制形式和十六进制形式显示AX的容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,
4、以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下:EXAMSCORE DB 01 ;学号DB 89,76,54,77,99 ;单科成绩DW ? ;该学生的总分DB 02 ;学号DB 79,88,64,97,92 ;单科成绩DW ? ;该学生的总分三、实验报告要求1.程序算法流程图。2.源程序清单。3.程序运行结果。4.调试过程中遇到的问题和解决的方法。实验4 综合程序设计一、实验目的与要求1熟悉汇编语言运行、调试环境及方法。2掌握汇编语言程序的设计方法。3熟悉调试工具DEBUG,并运用DEBUG工具调试程序。二、实验容根据下列要求,编写汇编源程序,并利用
5、DEBUG工具调试程序,验证程序的正确性。1. 编写汇编程序接收用户从键盘键入的月份数,在终端上显示该月的英文缩写名。当用户按下ESC键时,程序退出,返回DOS。参考程序执行过程如下: month?5 MAY month?9 SEP month?2. 按15行16列的表格形式显示ASCII码为10HFFH的所有字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII码为0)分隔。3.在第2题程序的基础上进行修改。将显示表格的行、列数由固定的15行16列改为由用户从键盘输入。然后,按用户输入的行列值进行显示。4.编写汇编程序将存数据区保存的若干个带符号16位数据按从大到小的顺序排列
6、后,以十进制真值的形式在屏幕上显示。三、实验报告要求1.程序算法流程图。2.源程序清单。3.程序运行结果。4.调试过程中遇到的问题和解决的方法。源程序:1.1*DATA SEGMENT x DB 3 y DB 1 z dw ? w db 23 r db 6DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX mov al,w sub al,x cbw mov bl,5 idiv bl sub al,y mov bl,r add bl,2 imul bl mov z,ax MOV AH,4CH INT
7、21HCODE ENDSEND START1.2*DATA SEGMENT x db 63 y db ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX mov al,x shr dl,1 shr al,1 rcl dl,1 mov y,dl MOV AH,4CH INT 21HCODE ENDSEND START2.1*DATA SEGMENT STRING DB g3tRfdtf TR34 MESSAGEONE DB Please input the number of string(10):
8、$ MESSAGETWO DB The number of string is:$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX mov ah,9 mov dx,offset messageone int 21h MOV AH,1 INT 21H MOV BL,AL MOV DL,10 MOV AH,2 INT 21H SUB BL,30H CBW MOV CX,BX MOV AL,0 MOV BX,OFFSET STRINGBEGIN: MOV DL,BX CMP DL,a JB RE CMP
9、DL,z JA RE INC ALRE: INC BX LOOP BEGIN ADD AL,30H mov bl,al mov ah,9 mov dx,offset messagetwo int 21h MOV DL,BL MOV AH,2 INT 21H MOV AH,4CH INT 21HCODE ENDS END START2.2*DATA SEGMENT MAXLEN DB 32 ACTLEN DB ? STRINGONE DB 32 DUP(?) STRINGTWO DB 32 DUP(?) MESSAGEONE DB Please input the string(31):$ ME
10、SSAGETWO DB The encryptic string is:$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX mov ah,9 mov dx,offset messageone int 21h MOV DX,OFFSET MAXLEN MOV AH,0AH INT 21H SUB CH,CH MOV CL,ACTLEN ADD DX,2 MOV BX,DX MOV BP,OFFSET STRINGTWO MOV DL,10 MOV AH,2 INT 21HBEGIN: MOV DL,B
11、X SUB DL,20H MOV BP,DL INC BX INC BP LOOP BEGIN mov AL,$ MOV BP,AL mov ah,9 mov dx,offset messagetwo int 21h MOV AH,9 MOV DX,OFFSET STRINGTWO INT 21H MOV AH,4CH INT 21HCODE ENDS END START3.1*CODE SEGMENTMAIN PROC FAR ASSUME CS:CODESTART: PUSH DS SUB AX,AX PUSH AX MOV AX,10101B CALL DISPDEC CALL CRLF
12、 CALL DISPHEX RETMAIN ENDPDISPDEC PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSHF MOV BX,AX MOV CX,10000D CALL DEC_DIV MOV CX,1000D CALL DEC_DIV MOV CX,100D CALL DEC_DIV MOV CX,10D CALL DEC_DIV MOV CX,1D CALL DEC_DIV POPF POP DX POP CX POP BX POP AX RETDEC_DIV PROC NEAR MOV AX,BX MOV DX,0 DIV CX MOV
13、 BX,DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H RETDEC_DIV ENDPDISPDEC ENDPDISPHEX PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSHF MOV BX,AX MOV CH,4 MOV CL,4ROTATE: ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7HPRINTIT: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE POPF POP DX POP CX POP BX POP AX RETDISPHEX ENDPCRLF PROC NEAR PUSH AX PUSH DX MOV DL,0AH MOV AH,2 INT 21H POP DX POP AX
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1