汇编实验作业 一 8086 汇编 寻找并输出水仙花数
来源:互联网 发布:能至网络瘫痪的攻击 编辑:程序博客网 时间:2024/05/21 01:56
汇编实验作业(一)
注:水仙花数指的是每一个十进制位的立方加起来等于他自身的三位数,水仙花数本身就是三位数- -范围100-999,可以遍历来做
之前想的是每一位的数在1-9之间选,再通过每位分别乘以100,10,1转化再与自身比较,如果可以循环多但是代码少效率高,可是不太会写,
下面是遍历100-999的数,看是否满足水仙花数条件,输出水仙花数
注意循环嵌套时一些变量初始值的改变,如这里si,flag1【也许这里不应该称之为变量,暂时这样说吧】
做的时候这两个值发生了改变导致不好找错误,然后发现两次循环(包含一个水仙花数)可以正常输出,三次及以上不行找到了这错误。
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:14px;">data segmentflag1 db 0flag2 db 0outt db 'shuixianhua: ','$'array0 dw 3 dup(0)<span style="color:#33CC00;">;保存三位数的每一位的三次方</span>data endsstack segmentstack endscode segmentassume cs:code,ds:data,ss:stackbegin: mov ax,data mov ds,ax lea dx,outt mov ah,9 int 21h mov cx,1000 x1: mov si,0<span style="color:#33CC00;">;同样也是一直没发现的错误,错误原因差不多</span> dec cx <span style="color:#33CC00;">;用cx来计100-999的这1000个数</span> mov ax,cx; cmp ax,99 jz endd<span style="color:#33CC00;">;************将这个三位数每一个十进制位算出并入栈保存********** </span> x2: mov bx,10 xor dx,dx div bx push dx cmp ax,0 jnz x2 mov flag1,3;<span style="color:#33CC00;">这里错误一直没有发现,之前直接把flag1定为3以为万事大吉导致下面循环一次过后flag1值变为0,所以说一定要注意变量值再下一次循环需不需要恢复到初始值。;*************计算每位数的立方************ </span>x3: pop ax mov bx,ax mul bl mul bl mov word ptr array0[si],ax add si,2;***********小心别顺手写成inc si************ dec flag1 cmp flag1,0 jnz x3 ;***********计算每位数立方的和************ sum: mov ax,array0[0] mov bx,array0[2] add ax,bx mov bx,array0[4] add ax,bx cmp ax,cx<span style="color:#33CC00;">;这里有两个条件需要暂时终止这个循环一是出现了水仙花数而是三位数遍历完了</span> mov ax,cx jnz x1 <span style="color:#33CC00;">;这两个条件如果一起放在最后,处理有点麻烦所以把后面一个判断放在最前面</span> call output<span style="color:#33CC00;">;//////////////////////////////////////////////</span> jmp x1 endd: mov ax,4c00h int 21h <span style="color:#33CC00;">;将水仙花数转化为10进制输出,如果之前把每一位数保存在数组里的话,可以不用这么繁琐,直接把之前计算的每一位输出就好</span> output: mov bx,10 xor dx,dx div bx push dx inc flag2 cmp ax,0 jnz output output0: pop dx add dx,30h mov ah,2 int 21h dec flag2 cmp flag2,0 jnz output0 mov dx,' ' mov ah,2 int 21h ret code ends end begin</span></span>
0 0
- 汇编实验作业 一 8086 汇编 寻找并输出水仙花数
- 汇编---水仙花数算法
- MIPS 汇编 水仙花数
- 汇编输出十进制数
- 汇编输出十进制数
- 汇编实验(输入一个数输出其平方值)
- 汇编实验(一)
- 汇编实验一
- 汇编 几个数判别找到最小的偶数并输出
- 【汇编学习笔记】2:判断并输出各类字符数
- FZU汇编作业 实验(四)
- FZU汇编作业 实验(五)
- 汇编作业
- 汇编作业
- 汇编作业
- 汇编作业
- 100---1000 的水仙花数并输出(
- 求出所有“水仙花数”并输出
- http-启用telnet并开启回显功能
- shopex备份
- 关于 JAVA wait()和notify()
- 工作总总结1 - osgi插件多并发产生的问题解决思路
- 使用curl查看网页源码/自动跳转/显示头信息/显示通信过程/发送表单信息/文件上传/Referer字段/User Agent
- 汇编实验作业 一 8086 汇编 寻找并输出水仙花数
- C开源项目
- OkHttp的使用
- UIApplication的delegate说明
- 编写高性能的 Swift 代码
- HBase简介
- LinkedHashMap分析
- java常用建模工具汇总
- java 数组复制