资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
作业 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 位二进制 数,两个数相加后结果存入 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 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: 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 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 ?PROMPT1 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,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 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 DATESI,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 单元存放该数据在 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,PROMPT1CALL 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 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(?)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 ENDPTRANS 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 ESILOOP 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 字单元中的四位十六进制数转换为 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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号