汇编:从9个有符号数中找出最小数,并将最小数与负数的个数以十进制的形式显示到屏幕上
来源:互联网 发布:电脑软件自己开 编辑:程序博客网 时间:2024/05/05 01:22
这学期开了汇编课,其痛苦不言而喻,各种寄存器各种使用方法各种限制各种奇奇怪怪的规则(学得好的大神求不喷)。。。在啥都还没搞明白的时候实验就来了,明明很简单的程序整整折腾了我一个星期!感觉逻辑怎么看都很对各种问人问老师无果后上网去问网友,最终才得以解决(感谢解答了我的疑惑的热心的网友,/鼓掌),整个一辛酸史。。特写此文章希望跟我做一样实验的同学有个参照
.486DATAS SEGMENT USE16NUM DB -2,9,5,-4,10,22,8,4,7MIN DB ? FUSHU DB 0DATAS ENDSCODES SEGMENT USE16 ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV CX,8 MOV BX,OFFSET NUM MOV AL,BYTE PTR [BX] ;AL装小数,BX装大数 INC BX ;bx指向下一个 JMP LASTAGAIN:MOV AL,BYTE PTR [BX] ;将小数付给alJMP NEXTLAST: CMP [BX],AL ;比较bx和alJL AGAIN;若bx比al小则跳转NEXT:INC BXLOOP LASTFINAL:MOV DH,ALCMP DH,0JG XIANMOV AH,2;如果最小数是负数先输出‘-’MOV DL,'-'INT 21HNEG DH;如果最小数是负数则将最小数取相反数XIAN:ADD DH,30HMOV DL,DH;输出alINT 21HMOV DL,32;输出空格,方便查看INT 21HMOV BX,OFFSET NUM;查找负数的个数MOV CX,9;循环9次AA:CMP BYTE PTR [BX],0JL COUNTJMP BBCOUNT:INC FUSHUBB:INC BXLOOP AAADD FUSHU,30H;输出负数个数MOV DL,FUSHUINT 21H MOV AH,4CH INT 21HCODES ENDS END START运行结果第一个数为最小数(目前只能显示(-10,10)的数,要显示范围以外的可以参照教程),第二个数为负数个数。
最后强调一件事情,也是导致我弄了那么久的罪魁祸首,重要的事情说三遍:DOS功能调用中的2号功能会影响AL寄存器的内容,DOS功能调用中的2号功能会影响AL寄存器的内容,DOS功能调用中的2号功能会影响AL寄存器的内容!!
第一次写汇编代码,很多不足望大大们多多包涵。
0 0
- 汇编:从9个有符号数中找出最小数,并将最小数与负数的个数以十进制的形式显示到屏幕上
- 汇编语言程序设计:从键盘上输入20个有符号数,将他们排序并在屏幕上显示
- 汇编语言: 试编写一段程序,从键盘接收一个-32768-32767 间的十进制有符号数,并在终端上 显示与它等值的二进制数。
- 找出一堆数中最小的前K个数
- 找出一堆数中最小的前K个数
- 从数组中找出最大的和最小的数
- 汇编中有符号与无符号数的区分
- 汇编中有符号与无符号数的区分
- 汇编中有符号与无符号数的区分
- 汇编中有符号与无符号数的区分
- 汇编中有符号与无符号数的区分
- 汇编语言: 试编写一段程序,从键盘接收一个 0-65535 间的十进制无符号数,并在终端上显示与 它等值的二进制数。
- 输入10个数,将其中最小的数与第一个对换,最大的数与最后一个对换
- 汇编语言: 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。
- 【C++】输入10个整数,将其中最小的数与第一个数对换【原创技术】
- C 语言编程:输入10个整数,将其中最小的数与第一个数对换
- 在一堆数中找出最小的两个数
- 从n个数中找出每个数的重复数
- ubuntu 安装maven
- 响应式布局之尺寸单位rem使用
- 日本語メール用語集
- CSS3 transform-origin属性之初理解
- 字符输入和输出(代码片段)
- 汇编:从9个有符号数中找出最小数,并将最小数与负数的个数以十进制的形式显示到屏幕上
- JavaScript 执行覆盖测试分析
- 在网页中嵌入地图
- 张先生和王某夫妇的债务纠纷
- Go指南中的练习:map
- 软件工程之项目管理
- mysql sharding
- JS 获取滚动条位置
- 44.Swap Nodes in Pairs