assembly - 如何改进这个汇编语言代码,以便我可以包含 10 个数字?
问题描述
我编写了这段代码来从 3 个元素的数组中找到最大元素。你们会建议在代码中进行哪些更改,以便我可以包含 10 个元素?
我尝试了许多更改,但无法弄清楚如何获得 10 个元素的数组的最大元素。
[ORG 0x100]
jmp start
num: dw 10,20,30
max: dw 0
start: mov ax,[num]
mov bx,0
mov [max],ax
add bx,2
mov ax,[num+bx]
cmp ax,[max]
jl next
mov [max],ax
next: add bx,2
mov ax,[num+bx]
cmp ax,[max]
jl end
mov [max],ax
end: mov ax,0x4c00
int 0x21
解决方案
同意,我的评论不太及时,但要提供更多信息就是实际进行练习,所以它就在这里,它绝对不复杂。
mov si, Data
xor cx, cx
mov dx, Crunch
Crunch:
lodsw
test ax, ax
jz Exit
push dx
cmp cx, ax
ja Exit
mov cx, ax
Exit:
ret ;Either turns to another iteration or terminates
Data: dw 4, 7, 21, 32, 208, 18, 44, 92, 244, 61, 108, 11, 0
这是动态的,所以它只会继续处理数据直到零。从技术上讲,这是一个循环,但至少不是传统意义上的循环,其中存在会强制代码向上移动的特定指令。
推荐阅读
- docker - 有没有一种简单的方法来测试是否需要“docker build”?
- c++ - 如何使用 boost 获取当前文件路径?
- docker - Docker unable to login to Nexus docker registry (hosted)
- javascript - 如何在不使用 Refs 的情况下从父级调用子级的方法?
- c# - Kustomer API,如何在对话中添加附件
- python - 为什么 numpy.array() 使用比 python 列表更多的 RAM?
- windows - 如何使用 QT 和 CMake 在调试模式下启用控制台窗口并在发布模式下禁用?
- python - 当多个属性是AWS lambda python环境中的字符串变量时,如何插入dynamodb表?
- mysql - 使用 nodejs 和 express 从查询参数更新 mysql 数据表
- laravel-5.8 - (此路由不支持 POST 方法。支持的方法:GET、HEAD。) laravel 解决方案?