懂汇编的都来看看,简单汇编题目(一),分析程序功能。元旦大派分罗!!!

haven 2002-01-01 10:45:49
以下的汇编题目不是很难,不过我想求得标准答案,并要求写出程序中各语句的意思(或功能)。请各位汇编高手不吝赐教。到下午一并算分。
一.分析程序功能
datarea segment
x dw ?
arhd dw 3,5,15,23,37,49,52,65
ared dw 78
n dw 32
datarea ends
program segment
main proc far
assume cs:program,ds:datarea

start: push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov ax,n
mov arhd-2,offffh
mov si,0
compare: cmp ared[si],ax
jle qqsert
mov bx,ared[si]
mov ared[si+2],bx
sub si,2
jmp short compare
qqsert: mov ared[si+2],ax
ret
main endp
program ends
end start
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
no007_hx 2002-01-01
  • 打赏
  • 举报
回复
to:haven(大天)

是将n(32)插入到有序数组(3,5,15,23,37,49,52,65,78)中!
haven 2002-01-01
  • 打赏
  • 举报
回复
小虎,再来帮帮我吧。其实我不是不会汇编,只是两年前学的,现在已忘记得差不多了,又不想再去翻书。
我给分,你做题,两相情悦,何乐而不为呢?
haven 2002-01-01
  • 打赏
  • 举报
回复
我顶
yinx 2002-01-01
  • 打赏
  • 举报
回复
datarea segment \\定义数据段
x dw ?
arhd dw 3,5,15,23,37,49,52,65
ared dw 78
n dw 32
datarea ends
program segment
main proc far
assume cs:program,ds:datarea

start: push ds //保护现场
sub ax,ax
push ax //保护现场
mov ax,datarea //把数据段的段地址给ds
mov ds,ax
mov ax,n //ax中放入要插入的数n
mov arhd-2,offffh //x=-1
mov si,0 //si=0
compare: cmp ared[si],ax //比较n和ared[0]的大小
jle qqsert //如果ax比ared[0]中的数大,则直接把ax放到ared[0]后,完成插入
mov bx,ared[si] //反之,将数组中的数后移给插入腾出空间
mov ared[si+2],bx
sub si,2 //si指向数组中前一个数
jmp short compare //继续比较
qqsert: mov ared[si+2],ax
ret
main endp
program ends
end start

题目中肯定要求插入的数要>0,所以数组的头上有一个 -1 ,以防插入的数<数组中的第一个元素。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧