题目1

  • 写一个完整的80X86汇编语言程序:键盘输入15个数据(转换成数值,存储到一维数组中,数值的长度为字),找出最小的偶数并在屏幕上显示,若没有偶数则显示“没有偶数!”。

.data

Number word 15 dup (?)

Mess byte “没有偶数!”

Input str1,10

Atoi,   atod   Ascii to double   Ascii to Int

Atoi str1   ;ax

Atod str1   ;eax

Itoa str1,ax

Dtoa str1,eax

;求最小偶数
;作者:KUN.A.A
;date:2022/04/22.386
.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.hcr          EQU    0dh   ; carriage return character
LF          EQU    0ah   ; linefeed character.STACK  4096             ; reserve 4096-byte stack.DATA    ; reserve storage for datacount     WORD    1,0
Prompt1     BYTE    "This program will find minest even number",0
Number      BYTE    20 dup (?),0
Mess        BYTE    "Mei You Ou Shu",0
inputnum    BYTE    cr,Lf,"Enter Array",0
MaoHao      BYTE    ":",0
acount      WORD    20 dup (?),0
result      BYTE    cr,Lf,"The minest even is:",0
minNum      BYTE    20 dup (?),0
nbrArray    WORD    100 dup (?),0.CODE      ; start of main program code_start:output   Prompt1mov      ecx,15          ;循环15次lea   ebx,nbrArray
loopg:                          output  inputnumitoa    acount,countinc     countoutput acountoutput    MaoHaoinput Number,20atod   Numbermov       [ebx],axadd     ebx,2
loop    loopgmov        ecx,15lea       ebx,nbrArray
FINDEVEN:mov    al,[ebx]        ;Test命令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。test    al,01H          ;但是,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。jnz     NEXT            ;奇数跳转到NEXT,1与1相与为0mov    dx,[ebx]        ;偶数存入EDXjmp     FINDMIN         ;偶数跳转到FINDMIN
NEXT:add ebx,2              ;单字节加2取下一位
loop    FINDEVEN;大于9FFFh的十六进制数据A000H、A001H...FFFEH、FFFFH等,在书写的时候都是以字母开头的。mov dx,0FFFFH           ;而在汇编程序中,数据不能以字母开头,都要在前面加0。jmp EXIT               ;没有偶数的时候跳转到EXIT输出没有偶数FINDMIN:                       ;找到最小偶数mov ecx,15               lea ebx,nbrArray
FIND:mov    al,[ebx]test    al,01Hjnz   NEXT2           ;奇数跳转到NEXT2cmp  dx,[ebx]        ;判断偶数的大小jb      NEXT2           ;小于也跳转到NEXT2    mov     dx,[ebx]NEXT2:add   ebx,2           ;下一个数字循环继续比较loop    FINDoutput  resultitoa  minNum,dxoutput     minNumjmp   FINISHEXIT:                         ;没有偶数output Mess
FINISH:                         ;程序出口INVOKE  ExitProcess, 0  ; exit with return code 0
PUBLIC _start                   ; make entry point publicEND                             ; end of source code

结果

有最小偶数2时

结果2:无偶数时

题目2

从键盘输入10个数据,存入一维数组中,并求出该数组的平均值显示在屏幕上。

;求平均值
;作者:KUN.A.A
;date:2022/04/22.386
.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.hcr          EQU    0dh   ; carriage return character
LF          EQU    0ah   ; linefeed character.STACK  4096             ; reserve 4096-byte stack.DATA    ; reserve storage for datacount     WORD    1,0
acount      WORD    20 dup (?),0
Prompt1     BYTE    "This program will Calculate average of 10 number",0
Number      BYTE    20 dup (?),0
inputnum    BYTE    cr,Lf,"Enter Array",0
result      BYTE    cr,Lf,"The average is:",0
MaoHao      BYTE    ":",0
nbrArray    DWORD   100 dup (?),0.CODE      ; start of main program code_start:output   Prompt1mov  ecx,10          ;循环10次lea   ebx,nbrArray    ;取首地址
loop1:output    inputnum        ;说明语句itoa   acount,countinc     countoutput acount          ;输出数组次序output   MaoHao          ;冒号输出input  Number,20       ;输入数字atod   Numbermov       [ebx],eaxadd        ebx,4           ;取数组下一位,双字加4
loop    loop1mov        ecx,10lea       ebx,nbrArraymov     edx,0           ;edx置0
loop2:add       edx,[ebx]       ;取数组数字加入edx和add     ebx,4
loop    loop2mov        eax,edx         ;总和放入eaxcdq                     ;字长扩展4倍方便除法mov      ebx,10          ;除数放入ebxidiv    ebx             ;有符号除法dtoa  nbrArray,eax    ;商,即结果放入nbrArrayoutput   result          ;输出结果output nbrArrayINVOKE ExitProcess, 0   ; exit with return code 0PUBLIC _start                       ; make entry point public
END                                 ; end of source code

结果:

test指令

test指令判断奇偶,将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。

lea指令

lea指令与EBX数组配合取数组首地址,并设置DUP数量防止运算时候溢出导致结果不符合预期。

80x86汇编语言 循环结构 找出最小的偶数并在屏幕上显示 求出数组的平均值显示在屏幕上相关推荐

  1. 循环结构——找各位数字中最大数

    [问题描述] 编写程序找出一个正整数n的各位数字中最大的数字,n由键盘输入. [样例输入] 1423 [样例输出] 4 [样例说明] 1423有4位数字,分别是1.4.2.3,其中最大值是4 解析: ...

  2. 练练手:建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。

    这个简单的小程序是对类的继承做的一个小巩固 要求如下: (1)形状类Shape (a)保护数据成员 double x,y:对于不同的形状,x和y表示不同的含义,如对于圆,x和y均表示圆的半径,而对于矩 ...

  3. 汇编语言实验5:循环结构程序设计

    <汇编语言程序设计>实验报告 实验五 循环结构程序设计 1. 实验目的 2. 实验任务 3. 实验步骤 3.1 循环结构题目设计 3.2 编写代码 3.3 代码分析 3.4 运行测试 4. ...

  4. c加加高级语言循环结构,高级C语言循环结构程序设计.ppt

    1,高级语言程序设计,孟宇龙计算机科学与技术学院mengyulong@,2,第5章循环结构程序设计,本章需要掌握的内容掌握3种基本循环.掌握多重循环.掌握continue和break的使用.编写循环结 ...

  5. c语言条件型循环结构报告,C语言循环结构实习报告 - 副本

    认识(实习)报告 实验(实习)名称循环结构程序设计 日期得分指导教师系专业年级班次姓名学号 一. 实验目的 (1)掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数. ⑵了 ...

  6. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

  7. python循环结构教学设计_Python程序设计 循环结构说课稿

    循环结构程序设计 -- 实现复杂计算程序 一.说教材 1. 教材地位分析 教材是由湖北省中小学教材编写组编写的义务教育教科书<信息技术> .其中<循 环结构程序设计>是初中信息 ...

  8. 7-226 sdut-C语言实验-矩阵输出(数组移位)7-227 sdut- C语言实验-计算1到n的和(循环结构)7-228 加法口诀表

    目录 7-226 sdut-C语言实验-矩阵输出(数组移位) 7-227 sdut- C语言实验-计算1到n的和(循环结构) 7-228 加法口诀表 7-226 sdut-C语言实验-矩阵输出(数组移 ...

  9. 7-229 sdut-C语言实验- 排序7-227 sdut- C语言实验-计算1到n的和(循环结构)

    目录 7-229 sdut-C语言实验- 排序 7-231 买文具 7-227 sdut- C语言实验-计算1到n的和(循环结构) 7-229 sdut-C语言实验- 排序 分数 16 全屏浏览题目 ...

最新文章

  1. 【组队学习】【25期】Datawhale组队学习内容介绍
  2. Logback中如何自定义灵活的日志过滤规则
  3. [雪峰磁针石博客]计算机视觉opcencv工具深度学习快速实战1人脸识别
  4. Forefront TMG2010中文版安装体验
  5. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1099:第n小的质数
  7. 【贪心】Stall Reservations(luogu 2859/poj 3190)
  8. 可还行?这款手机首获德国红点设计大奖
  9. c++如何判断两个字符串是否相同?_链表 | 如何判断两个单链表(无环)是否交叉...
  10. 使用PosixFilePermission的Java设置文件权限
  11. 浏览器中调用Linux程序,一个可以使用浏览器通过ssh连接linux的程序
  12. PS颜色校正(Photoshop颜色显示偏色)
  13. 如何防止135端口入侵
  14. VLAN详解系列:(6)VLAN间路由详解
  15. 【java网络】常用网络模型BIO
  16. python爬豆瓣影评代码_十行Python代码爬取豆瓣电影Top250信息
  17. 空气净化器哪个品牌口碑好 空气净化器除甲醛排行榜前十名
  18. 在线图片转为base64
  19. HyperLPR车牌识别技术算法之车牌精定位
  20. nodejs 安装模块失败 解决方法

热门文章

  1. 自我调节——偶像人物
  2. hb哈勃公链_骗子云集的哈勃公链HB属鸵鸟的,开盘之前还要烧香祭天!?
  3. numpy 分母为零的处理办法
  4. Caché 从入门到精通
  5. 开学季·东莞理工学院
  6. 验票证明怎么打印_OFD电子发票如何查验、打开、打印?如何电子归档?
  7. 谷歌眼镜开发Mirror API之PHP开发
  8. 在Eclipse中导入编译MTK平台Android6.0源码的原生Gallery2应用
  9. caj转换成word免费转换怎么转换?
  10. 学习笔记:百度和360关键字提交