找回密码
 立即注册
查看: 177|回复: 0

汇编语言——100个数中的最大数

[复制链接]
发表于 2023-2-18 11:37 | 显示全部楼层 |阅读模式
问题描述

已知,从baffuer开始存放了100个带符号的字数据,试编写一完整的汇编语言程序,求出这100个数中的最大数,并将结果存放到MAX单元。

解决方案
  1. DSEG SEGMENT
  2. n EQU 100H
  3. M DW n DUP (?)
  4. DATA DW ? ;M+2n单元
  5. ADDR DW ? ;M+2(n+1)单元
  6. DSEG ENDS
  7. CSEG SEGMENT
  8. MAIN PROC FAR
  9. ASSUME CS: CSEG, DS: DSEG
  10. START: PUSH DS ;设置返回DOS
  11. SUB AX, AX
  12. PUSH AX
  13. MOV AX, DSEG
  14. MOV DS, AX ;给DS赋值
  15. BEGIN: MOV CX, n ;循环计数器
  16. LEA DI, M
  17. MOV AX, [DI] ;取第一个数
  18. MOV ADDR, DI ;记下绝对值最大的数的地址
  19. CMP AX, 0 ;此数是正数吗?
  20. JNS ZHEN ;是正数,即为绝对值,转去判断下一个数
  21. NEG AX ;不是正数,变为其绝对值
  22. ZHEN: MOV BX, [DI]
  23. CMP BX, 0 ;此数是正数吗?
  24. JNS COMP ;是正数,即为绝对值,转去比较绝对值大小
  25. NEG BX ;不是正数,变为其绝对值
  26. COMP: CMP AX, BX ;判断绝对值大小
  27. JAE ADDRESS
  28. MOV AX, BX ;(AX)<(BX),使(AX)中为绝对值最大的数
  29. MOV ADDR, DI ;记下绝对值最大的数的地址
  30. ADDRESS: ADD DI, 2
  31. LOOP ZHEN
  32. MOV DATA, AX ;记下此数
  33. RET
  34. MAIN ENDP
  35. CSEG ENDS ;以上定义代码段
  36. END START
复制代码
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-27 14:22 , Processed in 0.128417 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表