文档详情

汇编语言实验报告(三个小题).doc

发布:2017-06-19约4.35千字共4页下载文档
文本预览下载声明
实验6—1 该程序的功能为将一个十进制的数转换成十六进制的数。程序先将十位数和个位数分离出来,然后再对十位数进行处理,把个位数加上,便将一个两位数的十进制数转换成十六进制。 程序如下: DATA SEGMENT BCDBUF DB 65H BINBUF DB ? DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,BCDBUF CALL TRAN MOV BINBUF,AL MOV CL,04H ;显示代码的开头 MOV DL,BCDBUF AND DL,0F0H SHR DL,CL ADD DL,30H MOV AH,02H INT 21H MOV DL,BCDBUF ;这里可以改BINBUF AND DL,0FH ADD DL,30H MOV AH,02H INT 21H ;显示代码的结束 RET MAIN ENDP TRAN PROC NEAR PUSHF PUSH BX PUSH CX MOV AH,AL AND AH,0FH MOV BL,AH AND AL,0F0H MOV CL,04H ROR AL,CL MOV BH,0AH MUL BH ADD AL,BL POP CX POP BX POPF RET TRAN ENDP CODE ENDS END START 在屏幕显示的代码如上注释。 运行结果如下: 要是显示的是经过转换的数字,则在“MOV DL,BCDBUF ;这里可以改BINBUF”这一行改成“MOV DL, BINBUF ”便可以显示“41”。 实验6—2 该程序的功能为将三个数组ARY1,ARY2和ARY3分别进行求和,求和的方式为调用子程序,用BX将参数带入子程序中,这些参数都是变量的地址,这样就可以更好的控制变量的变化。 程序如下: DATA SEGMENT ARY1 DW 1,2,3,4,5,6,7,8,9,10 COUNT1 DW ($-ARY1)/2 SUM1 DW ? ARY2 DW 10,20,30,40,50,60,70,80 COUNT2 DW ($-ARY2)/2 SUM2 DW ? ARY3 DW 100,200,300,400,500,600 COUNT3 DW ($-ARY3)/2 SUM3 DW ? TABLE DW 3 DUP(?) DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV TABLE,OFFSET ARY1 MOV TABLE+2,OFFSET COUNT1 MOV TABLE+4,OFFSET SUM1 LEA BX,TABLE CALL ARY_SUM MOV TABLE,OFFSET ARY2 MOV TABLE+2,OFFSET COUNT2 MOV TABLE+4,OFFSET SUM2 LEA BX,TABLE CALL ARY_SUM MOV TABLE,OFFSET ARY3 MOV TABLE+2,OFFSET COUNT3 MOV TABLE+4,OFFSET SUM3 LEA BX,TABLE CALL ARY_SUM //; MOV DL,3 //;AGAIN: MOV CL,0CH ;显示部分的开头 MOV DX,SUM1 AND DX,0F000H SHR DX,CL ADD DL,30H MOV AH,02H INT 21H MOV DX,SUM1 MOV CL,08H AND DX,0F00H SHR DX,CL ADD DL,30H MOV AH,02H INT 21H MOV DX,SUM1 MOV CL,04H AND DX,00F0H SHR DX,CL ADD DL,30H MOV AH,02H INT 21H MOV DX,SUM1 AND DX,000FH ADD DL,30H MOV AH,02H INT 21H //; DEC DL //; CMP DL,0 //; JG AGAIN ;HERE MOV CL,0CH
显示全部
相似文档