福州大学汇编语言课程作业1~5

上传人:mg****85 文档编号:34041403 上传时间:2018-02-20 格式:DOC 页数:16 大小:90KB
返回 下载 相关 举报
福州大学汇编语言课程作业1~5_第1页
第1页 / 共16页
福州大学汇编语言课程作业1~5_第2页
第2页 / 共16页
福州大学汇编语言课程作业1~5_第3页
第3页 / 共16页
福州大学汇编语言课程作业1~5_第4页
第4页 / 共16页
福州大学汇编语言课程作业1~5_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《福州大学汇编语言课程作业1~5》由会员分享,可在线阅读,更多相关《福州大学汇编语言课程作业1~5(16页珍藏版)》请在金锄头文库上搜索。

1、作业 1.1题目: 设某存储区有一数组 ARRAY,现要求对数组中数据分别按正数(含 0)和负数的绝对值累加,并统计正数和负数的个数。累加和与统计个数分别存入SUM1、SUM2、CUNT1 和 CUNT2 单元中。INCLUDE IRVINE32.INC.DATADAT DD 1100B,1000BSUM DD ?.CODESTART: XOR EAX,EAXMOV ESI,0MOV EAX,DATESIADD ESI,4ADD EAX,DATESIMOV SUM,EAXEXITEND START1.2 两个 32 位数的相加运算 内容: DAT 开始的单元中存放两个 32 位二进制 数,两个

2、数相加后结果存入 SUM 单元中。 ( SUM 为 32 位 )DAT DD X1,X2SUM DD ?INCLUDE IRVINE32.INC.DATAARRAY DB 50 DUP(?)SUM1 DB ?SUM2 DB ?CUNT1 DB ?CUNT2 DB ?COUNT DB ?PROMPT1 BYTE 要输入几个数:,0PROMPT2 BYTE 请输入数:,0PROMPT3 BYTE 正数的个数和正数的和为:,0PROMPT4 BYTE 负数的个数和绝对值和为:,0PROMPT5 BYTE 是否退出?(Y/N),0.CODESTART:XOR EAX,EAXXOR EBX,EBXXOR

3、 ECX,ECXXOR EDX,EDXLEAEDX,PROMPT1CALL WRITESTRINGCALL READINTCMP EAX,0JNG STARTMOV COUNT,ALMOV CL,COUNTMOV ESI,0LEAEDX,PROMPT2CALL WRITESTRINGINPUT: CALL READINTMOV ARRAYESI,ALINC ESILOOP INPUTXOR EAX,EAXXOR EBX,EBXXOR ECX,ECXXOR EDX,EDXMOV ESI,0MOV CL,COUNTDEAL: MOV CH,ARRAYESICMP CH,0JNL ZHENGFU:

4、NEG CHADD BL,CHINC DLJMP NEXTZHENG: ADD AL,CHINC DHNEXT: INC ESIDEC CLCMP CL,0JNE DEALMOV SUM1,ALMOV SUM2,BLMOV CUNT1,DHMOV CUNT2,DLXOR EAX,EAXLEAEDX,PROMPT3CALL WRITESTRINGMOV AL,CUNT1CALL WRITEINTCALL CRLFMOV AL,SUM1CALL WRITEINTCALL CRLFLEAEDX,PROMPT4CALL WRITESTRINGMOV AL,CUNT2CALL WRITEINTCALL

5、CRLFMOV AL,SUM2CALL WRITEINTCALL CRLFLEAEDX,PROMPT5CALL WRITESTRINGCALL READCHARCMP EAX,YJE QUITCALL CRLFJMP STARTQUIT: EXITEND START2.1 统计正数(负数)的个数内容:DAT 开始的单元中存放 N 个字节有符号数,统计正数的个数存入 T0 单元中;负数的个数存入 T1 单元中;Dat DB X1,XNT0 DB ?T1 DB ?INCLUDE IRVINE32.INC.DATADAT DB 50 DUP(?)T0 DB ?T1 DB ?COUNT DB ?PRO

6、MPT1 BYTE 请输入个数:,0PROMPT2 BYTE 请输入数:,0PROMPT3 BYTE 正数和负数的个数分别是:,0PROMPT BYTE 、,0.CODESTART: MOV T0,0MOV T1,0XOR EAX,EAXXOR ECX,ECXMOV ESI,0LEAEDX,PROMPT1CALL WRITESTRINGCALL READINTMOV COUNT,ALLEAEDX,PROMPT2CALL WRITESTRINGMOV CL,COUNTINPUT: CALL READINTMOV DATESI,ALINC ESILOOP INPUTMOV ESI,0MOV CL,

7、COUNTJUDGE: MOV AL,DATESICMP AL,0JNL ZHENGFU: INC T1JMP NEXTZHENG: INC T0NEXT: INC ESILOOP JUDGEXOR EAX,EAXLEAEDX,PROMPT3CALL WRITESTRINGMOV AL,T0CALL WRITEINTMOV EDX,OFFSET PROMPTCALL WRITESTRINGMOV AL,T1CALL WRITEINTCALL CRLFJMP STARTEND START2.2 求最大数内容:DAT 开始的字单元中存放 N 个无符号数,求出最大数存入 MAX 单元中。DAT DW

8、 X1,XNMAX DW ?INCLUDE IRVINE32.INC.DATADAT DW 50 DUP(?)MAX DW ?COUNT DW ?PROMPT1 BYTE 输入几个数?,0PROMPT2 BYTE 请输入数:,0PROMPT3 BYTE 最大的数是:,0.CODESTART: XOR EAX,EAXXOR ECX,ECXLEAEDX,PROMPT1CALL WRITESTRINGCALL READINTMOV COUNT,AXLEAEDX,PROMPT2CALL WRITESTRINGMOV ESI,0MOV CX,COUNTINPUT: CALL READINTMOV DAT

9、ESI,AXADD ESI,2LOOP INPUTMOV AX,DAT0MOV MAX,AXMOV ESI,2MOV CX,COUNTDEC CXDEAL: MOV AX,DATESICMP AX,MAXJNA NEXTMOV MAX,AXNEXT: ADD ESI,2LOOP DEALLEAEDX,PROMPT3CALL WRITESTRINGMOV AX,MAXCALL WRITEINTCALL CRLFJMP STARTEND START3.1 数据查找内容:TAB 开始的字节单元中存放 N 个无符号数,dat 单元存放一个已知数据 X,现从TAB 中查找是否存在数据 X,如果存在,NO

10、 单元存放该数据在 TAB 中的序号,否则 NO单元存放 0FFH 。TAB DB X1,XNdat DB xno DB ?INCLUDE IRVINE32.INC.DATATAB DB 20 DUP(?)DAT DB ?NO DB -1COUNT DB ?PROMPT1 DB INPUT HOW MANY NUMBER?,0PROMPT2 DB INPUT SERACH NUMBER:,0PROMPT3 DB INPUT NUMBER:,0PROMPT4 DB THE NUMBER IS IN:,0.CODESTART:XOR EAX,EAXXOR ECX,ECXLEAEDX,PROMPT1

11、CALL WRITESTRINGCALL READINTMOV COUNT,ALLEAEDX,PROMPT2CALL WRITESTRINGCALL READINTMOV DAT,ALLEAEDX,PROMPT3CALL WRITESTRINGMOV ESI,0MOV CL,COUNTINPUT: CALL READINTMOV TABESI,ALINC ESILOOP INPUTMOV ESI,0XOR EAX,EAXMOV CL,COUNTSEARCH: MOV AL,TABESICMP AL,DATJNE NEXTMOV EBX,ESIMOV NO,BLJMP QUITNEXT: INC

12、 ESILOOP SEARCHQUIT: CMP NO,-1JE NOFINDFIND: JMP OUTPUTNOFIND: MOV NO,0FFHOUTPUT: MOV AL,NOLEAEDX,PROMPT4CALL WRITESTRINGCALL WRITEHEXCALL CRLFJMP STARTEND START3.2 无符号数排序 内容:TAB 开始的单元中存放 N 个字节无符号数,请按照从大到小排序后,存入 DAT单元中。 (注意:TAB 数据保持不变)TAB DB X1,XNDAT DB N DUP(?)INCLUDE IRVINE32.INC.DATATAB DB 50 DUP

13、(?)DAT DB 50 DUP(?)COUNT DB 0PROMPT1 BYTE 输入几个数:,0PROMPT2 BYTE 输入数:,0PROMPT3 BYTE 从大到小排序后是:,0.CODESCANF PROCXOR EAX,EAXXOR ECX,ECXLEAEDX,PROMPT1CALL WRITESTRINGCALL READINTMOV COUNT,ALLEAEDX,PROMPT2CALL WRITESTRINGMOV ESI,0MOV CL,COUNTINPUT: CALL READINTMOV TABESI,ALINC ESILOOP INPUTCALL CRLFSCANF E

14、NDPTRANS PROCXOR EAX,EAXXOR ECX,ECXMOV ESI,0MOV CL,COUNTMOVE: MOV AL,TABESIMOV DATESI,ALINC ESILOOP MOVETRANS ENDPORDER PROCXOR EAX,EAXXOR ECX,ECXXOR ESI,ESIXOR EDI,EDIMOV CL,COUNTDEC ECXBEGIN: MOV EDI,ECXMOV ESI,0COMP: MOV AL,DATESICMP AL,DATESI+1JNB NEXTXCHG AL,DATESI+1MOV DATESI,ALNEXT: INC ESILO

15、OP COMPMOV ECX,EDILOOP BEGINORDER ENDPPRINT PROCXOR EAX,EAXXOR ECX,ECXLEAEDX,PROMPT3CALL WRITESTRINGMOV ESI,0MOV CL,COUNTOUTPUT: MOV AL,DATESICALL WRITEINT; CALL CRLFINC ESILOOP OUTPUTCALL CRLFPRINT ENDPSTART:CALL SCANFCALL TRANSCALL ORDERCALL PRINTJMP STARTEND START4.1 代码转换内容:用子程序设计的方法,分别把 BUF 字单元中

16、的四位十六进制数转换为 ASCII 码存入 MAS 开始的单元中,并在终端上显示 MAS 开始的 4 个字节单元。BUF DW XMAS DB 4 DUP(?)INCLUDE IRVINE32.INC.DATABUFDW 16ABHMAS DB 4 DUP(?).CODEMAIN PROCCALL DecbinEXITMAIN ENDPDecbin PROCPUSH DXMOV ESI,0MOV CH,4HRETURN: MOV CL,4HMOV DX,BUFROL DX,CLMOV BUF,DXAND DL,0FH ;取 DL 低 4 位CMP DL,0AHJB YESADD DL,7YES: ADD DL,30H ;该步将 DL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号