首页 奇数偶数

奇数偶数

举报
开通vip

奇数偶数3、从键盘输入100以内的数,判断该数字是奇数还是偶数。如果是奇数输出小于该数且能被5整除的数,然后求他们之和;如果是偶数则输出该数分别除以3,5,7的余数。 格式如下: Please enter a number: 45(按回车)(10%) Result: 5、10、15、20、25、30、35、40(按回车)(30%) Sum: 180(按回车)(20%) Continue(y/n)? (10%) 若输入y则继续,若输入n则退出 Please enter a number: 44(按回车) Resu...

奇数偶数
3、从键盘输入100以内的数,判断该数字是奇数还是偶数。如果是奇数输出小于该数且能被5整除的数,然后求他们之和;如果是偶数则输出该数分别除以3,5,7的余数。 格式如下: Please enter a number: 45(按回车)(10%) Result: 5、10、15、20、25、30、35、40(按回车)(30%) Sum: 180(按回车)(20%) Continue(y/n)? (10%) 若输入y则继续,若输入n则退出 Please enter a number: 44(按回车) Result: 2、4、2(按回车)(30%) Continue:(y/n)? 若输入y则继续,若输入n则退出 DATA SEGMENT DATA1 DB 20 DUP(?) ;存缓冲区输入的字符串 DATA2 DB 20 DUP(30H) DATA3 DB?;用来存转换后的10进制 BUFF DB 50 DB? DB 50 DUP(?) DATA ENDS STACK SEGMENT ST1 DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: START3: MOV AX,DATA ;占源的设计,才可以使用PUSH,POP MOV DS,AX MOV AX,STACK MOV SS,AX CALL TR LEA DX,BUFF MOV AH,0AH INT 21H ;从键盘接收字符串到内存的输入缓冲区(3句) ;读取数据到缓冲区,BUFF(键盘输入,一般是Enter结束) CALL TR LEA SI,BUFF ;SAV调用之前先给DI,SI赋值 LEA DI,DATA1 CALL SAV ;把缓存区的输入字符存到数据data1中(3句) LEA DX,DATA1 ;打印,显示data1,查看你存入的DATA1 跟你输出的是否一样MOV AH,09H ;AH 09功能调用,显示字符串 INT 21H CALL TR LEA DI,DATA1 ;data1数据存到Ax中,存为数值(10进制) XOR DX,DX MOV DL,10 MOV AX,0 L2: MOV BL,[DI] INC DI ;INC +1指令 CMP BL,24H ;24H -> '$' ,也就是输入的结束符,或者是‘/0’ JE JUMP1 ;相等时跳转,数据存完在AX,开始下一步 SUB BL,30H MUL DL ADD AL,BL JMP L2 JUMP1: LEA SI,DATA3 MOV [SI],AL MOV AL,[SI] XOR AH,AH MOV DL,2 DIV DL ;ax除以DL中的值,商放AL,余数放AH CMP AH,0 JE OSHU ;余数是0,则为偶数 JMP JISHU ;无条件转移,转到奇数 START1: JMP START3 OSHU: ;偶数 LEA SI,DATA3 MOV AL,[SI] MOV DL,3 ;3的余数 DIV DL MOV DL,AH ADD DL,30H MOV AH,02H INT 21H ;AH为余数,赋给DL,AH的02号功能将DL 的字符显示在屏幕 MOV DL,' ' MOV AH,02H INT 21H XOR AH,AH LEA SI,DATA3 MOV AL,[SI] MOV DL,5 ;5的余数 DIV DL MOV DL,AH ADD DL,30H MOV AH,02H INT 21H MOV DL,' ' MOV AH,02H INT 21H XOR AH,AH LEA SI,DATA3 MOV AL,[SI] JMP S1 START2: JMP START1 S1: MOV DL,7 ;7的余数 DIV DL MOV DL,AH ADD DL,30H MOV AH,02H INT 21H CALL TR JMP J9 JISHU: ;奇数操作 XOR AH,AH LEA SI,DATA3 MOV AL,[SI] MOV DL,5 DIV DL ;AL 为商 MOV DL,AL MOV CL,AL ;循环会用到CL,用跳转代替的循环 XOR BX,BX ;归0 XOR AL,AL ;归0 MOV CH,1 ;用来计数,直到最后与CL相等 JISHU1: MOV AL,CH MOV DL,5 MUL DL ;AX=AL*DL;如果是奇数输出小于该数且能被5整除的数,然后求他们之和; ;从5、10、15 … 5*N 直到5*(N+1)>你输入的数;5 = 1*5 XOR AH,AH ADD BX,AX ;和存入BX中 ADD CH,1 ;CH计数+1 ; MOV AL,15 MOV DL,10 DIV DL ;AL 为AX/源的商AH为AX/源的余数;除以10 PUSH AX ;保存AX,即除法结果 CMP AL,0 ;是否小于10 JE J4 ;JE/JZ相等时跳转, 小于10跳转,因为大于10 的打印跟小于的不一样 MOV DL,AL ;大于10 打印十位 ADD DL,30H MOV AH,02H INT 21H ;打印出来该数 POP AX J4: MOV DL,AH ADD DL,30H MOV AH,02H INT 21H MOV DL,' ';打印空格 MOV AH,02H INT 21H CMP CL,CH JB J3 JMP JISHU1 ;跳转 J3: CALL TR LEA SI,DATA3 MOV AX,BX ;BX为求和结果,给AX CALL SPRINT1 ;注意DATA3以后存入的不是你输入的数了,而是和的字符串 LEA DX,DATA3 MOV AH,09H INT 21H J9:CALL TR MOV AH,01H ;是否继续 INT 21H CMP AL,'y' JE START2 MOV AX,4C00H INT 21H TR PROC ;TR 回车换行的小模块代码 MOV DL,0AH ;换行 MOV AH,02H INT 21H MOV DL,0DH ;回车 MOV AH,02H INT 21H RET TR ENDP SAV PROC ;SAV 输入的字符串,存到data;直接把缓冲区的数据存到data ;调用之前先给DI,SI赋值,DI为SAV的目的操作数,SI为源操作数MOV CL,[SI+1] XOR CH,CH ADD SI,2 L1:LODSB ;BUFF 读入累加器 MOV [DI],AL INC DI LOOP L1 MOV AL,'$' MOV [DI],AL RET SAV ENDP SPRINT PROC ;这个函数没用到,因为当时临时写了另一个SPRINT1,这个应该是出问题了 MOV DL,10 D1:DIV DL ADD AH,30H MOV [SI],AH INC SI XOR AH,AH CMP AX,0 JE D2 JMP D1 D2:MOV AL,'$' MOV [SI],AL RET SPRINT ENDP SPRINT1 PROC ;数值转化为字符串的函数输入AX 输出data3 PUSH SI PUSH AX ADD SI,5 MOV DL,10 MOV AL,24H MOV [SI],AL ;事先出入结束符到SI中 POP AX ; XOR AH,AH DEC SI ;自减是因为我们先存入各位,由低到高如123 先从后面存入3 比较好编程 D6: DIV DL ;求当前最低位 ADD AH,30H MOV [SI],AH ;当前最低位存入字符串中 DEC SI ;自减是因为我们先存入各位,由低到高如123 先从后 XOR AH,AH CMP AX,0 ;判断商是否为0 即AL=0?不 JE D7 ;判断商是否为0 即AL=0则 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示已经转化完毕(10进制到字符串转化) JMP D6 D7: POP DI MOV AL,' ';前面的存入空格,因为我们定义了4位,但是如果实际只有123 则字符串为‘ 123’而不是‘123’,‘?123’ D8: CMP SI,DI JB D9 MOV [SI],AL DEC SI JMP D8 D9: RET SPRINT1 ENDP P1 PROC ;此函数没有用到 XOR BL,BL L7: LODSB ;具体操作是把SI指向的存储单元读入累加器, ;LODSB就读入AL,LODSW就读入AX中,然后SI自动增加或减小1或2.其常常是对数组或字符串中的元素逐个进行处理。 JMP L7 RET P1 ENDP CODE ENDS END START
本文档为【奇数偶数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:0
分类:
上传时间:2019-06-16
浏览量:8