1、请编程完成此功能。数据缓冲区参考数据定义如下:EXAMSCORE DB 01 ;学号DB 89,76,54,77,99 ;单科成绩DW ?;该学生的总分DB 02 ;DB 79,88,64,97,92 ;实验4综合程序设计2.掌握汇编语言程序的设计方法。1.编写汇编程序接收用户从键盘键入的月份数,在终端上显示该月的英文缩写 名。当用户按下ESC键时,程序退出,返回DOS。参考程序执行过程如下:month ?5 / MAY month ?9/ SEP month ?2.按15行X 16列的表格形式显示ASCII码为10HFFH的所有字符。每16个字符 为一行,每行中的相邻两个字符之间用空白符(A
2、SCII码为0)分隔。3.在第2题程序的基础上进行修改。将显示表格的行、列数由固定的 15行16列改为由用户从键盘输入。然后,按用户输入的行列值进行显示。4.编写汇编程序将内存数据区保存的若干个带符号 16位数据按从大到小的顺序 排列后,以十进制真值的形式在屏幕上显示。1.1* DATA SEGMENTx DB 3y DB 1 z dw ?w db 23r db 6DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX mov al,w sub al,x cbw mov bl,5 idiv bl sub
3、al,y mov bl,r add bl,2 imul bl mov z,axMOV AH,4CHINT 21HCODE ENDSEND START1.2* DATA SEGMENTx db 63y db ? MOV AX,DATA MOV DS,AX mov al,x shr dl,1 shr al,1rcl dl,1mov y,dl2.1*DATA SEGMENTSTRING DB g3tRfdtf TR34MESSAGEONE DB Please input the number of string(10):$MESSAGETWO DB The number of string is:$
4、DATASTART:MOV AX,DATAMOV DS,AXmov ah,9mov dx,offset messageone int 21hMOV AH,1MOV BL,ALMOV DL,10MOV AH,2SUB BL,30HCBWMOV CX,BXMOV AL,0MOV BX,OFFSET STRINGBEGIN:MOV DL,BXCMP DL,aJB REzJA REINC ALRE:INC BXLOOP BEGINADD AL,30Hmov bl,almov dx,offset messagetwo int 21hMOV DL,BL2.2* DATA SEGMENTMAXLEN DB
5、32ACTLEN DB ?STRINGONE DB 32 DUPSTRINGTWO DB 32 DUPPlease input the string(eKEY_HEX PROC NEARHEX_REERR:MOV DX,OFFSET STRING2MOV BX,0 HEX_RE:JE HEX_EXITJL HEX_ERRCMP AL,0AH JL NEXT SUB AL,7 CMP AL,0AH JL HEX_ERR CMP AL,10H JL NEXT SUB AL,20H CMP AL,0AH JL HEX_ERR CMP AL,10H JNL HEX_ERR NEXT:MOV CL,4S
6、HL BX,CLMOV AH,0JMP HEX_RE HEX_ERR:JMP HEX_REERR HEX_EXIT:POP AX RET KEY_HEX ENDP .* ;* ;用十进制输出BX二进制的数方法DISPDEC PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSHFMOV DX,OFFSET STRING301 MOV AH,9 INT 21HMOV CX,10000D CALL DEC_DIV MOV CX,1000D CALL DEC_DIV MOV CX,100D CALL DEC_DIV MOV CX,10D CALL DEC_DIV
7、 MOV CX,1D CALL DEC_DIV POPFPOP DX POP CX POP BX POP AX RET DEC_DIV PROC NEARMOV DX,0 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H RETDEC_DIV ENDP DISPDEC ENDP .* ;* ;用十进制输出BX二进制的数方法二 DISPDECZ PROC NEARPUSH AX PUSH BXMOV DX,OFFSET STRING302mov BX,0 dispdecz_re:MOV XBX,DLcmp ax,0JNE DISPDEC
8、Z_RE dispdecz_next:CMP BX,0JE DISPDECZ_EXITDEC BXMOV DL,XBXJMP DISPDECZ_NEXT DISPDECZ_EXIT:DISPDECZ ENDP .* ;* ;用十六进制输出BX二进制数 DISPHEX PROC NEARMOV DX,OFFSET STRING4MOV CH,4ROL BX,CLMOV AL,BLAND AL,0FHCMP AL,3AHJL PRINTITADD AL,7HDISPHEX ENDP.* ;* ;输出换行符MOV DL,0DH输出错误提示ERROR PROC NEARMOV DX,OFFSET STRING0MOV AH,9 INT 21HERROR ENDP4.1*MONTH DBJAN,FEBMARAPRMAYJUNJULAUGSEPOCTNOVDE CNUM DB 2 DUPSTRONE DB month?,10,$STRTWO DB month ERROR!,10,MOV DX,OFFSET STRONEMOV NUM,BLM
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1