汇编基础问题!50分相送!

ynkmhp 2009-06-16 07:39:19
代码:
dat segment
db 49,56,100,95,63,75,84,59,60,64,69,70,100,98,72,61,59,82,75,51
s1 db 0
s2 db 0
s3 db 0
s4 db 0
s5 db 0
s6 db 0
dat ends
cod segment
assume cs:cod,ds:dat
start :mov ax,dat
mov ds,ax
mov bx,0
mov cx,20
s1: mov al,[bx]
cmp al,60
jae next1
inc inc s1
next1:inc bx
loop s1

mov bx,0
mov cx,20
s2: mov al,[bx]
cmp al,60
jb next2
cmp 69
ja next2
inc inc s2
next2: inc bx
loop s2

mov bx,0
mov cx,20
s3: mov al,[bx]
cmp al,70
jb next3
cmp 79
ja next3
inc inc s3
next3: inc bx
loop s3

mov bx,0
mov cx,20
s4: mov al,[bx]
cmp al,80
jb next4
cmp 89
ja next4
inc inc s4
next4: inc bx
loop s4

mov bx,0
mov cx,20
s5: mov al,[bx]
cmp al,90
jb next4
cmp 99
ja next5
inc inc s5
next5: inc bx
loop s5

mov bx,0
mov cx,20
s6: mov al,[bx]
cmp al,100
jnz next6
inc inc s6
next6: inc bx
loop s6

mov ah,4c00h
int 21
cod ends
end start
编译obj文件报错:
11.ASM(3): error A2024: Segment parameters are changed
11.ASM(4): error A2024: Segment parameters are changed
11.ASM(5): error A2024: Segment parameters are changed
11.ASM(6): error A2024: Segment parameters are changed
11.ASM(7): error A2024: Segment parameters are changed
11.ASM(8): error A2024: Segment parameters are changed
11.ASM(16): error A2024: Segment parameters are changed
11.ASM(19): error A2009: Symbol not defined: INC
11.ASM(21): error A2026: Reference to multidefined symbol
11.ASM(25): error A2024: Segment parameters are changed
11.ASM(28): error A2056: Immediate mode illegal
11.ASM(30): error A2009: Symbol not defined: INC
11.ASM(31): error A2006: Phase error between passes
11.ASM(32): error A2026: Reference to multidefined symbol
11.ASM(36): error A2024: Segment parameters are changed
11.ASM(39): error A2056: Immediate mode illegal
11.ASM(41): error A2009: Symbol not defined: INC
11.ASM(42): error A2006: Phase error between passes
11.ASM(43): error A2026: Reference to multidefined symbol
11.ASM(47): error A2024: Segment parameters are changed
11.ASM(50): error A2056: Immediate mode illegal
11.ASM(52): error A2009: Symbol not defined: INC
11.ASM(53): error A2006: Phase error between passes
11.ASM(54): error A2026: Reference to multidefined symbol
11.ASM(58): error A2024: Segment parameters are changed
11.ASM(61): error A2056: Immediate mode illegal
11.ASM(63): error A2009: Symbol not defined: INC
11.ASM(64): error A2006: Phase error between passes
11.ASM(65): error A2026: Reference to multidefined symbol
11.ASM(69): error A2024: Segment parameters are changed
11.ASM(72): error A2009: Symbol not defined: INC
11.ASM(74): error A2026: Reference to multidefined symbol
11.ASM(76): error A2050: Value out of range

50466 + 450030 Bytes symbol space free

0 Warning Errors
33 Severe Errors
大侠们帮帮忙!谢谢
...全文
615 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanlingcg 2009-06-19
  • 打赏
  • 举报
回复
到处都是s1.s2...s(n).编译器都被你搞糊了。不知那个s(n)对应那个s(n)...
mary0208 2009-06-19
  • 打赏
  • 举报
回复
学习
simon_14 2009-06-16
  • 打赏
  • 举报
回复
data segment
score db 49,56,100,95,63,75,84,59,60,64,69,70,100,98,72,61,59,82,75,51
len db $-score
s6 dw 0
s7 dw 0
s8 dw 0
s9 dw 0
s10 dw 0
data ends

sta segment stack
dw 100h dup(?)
top label word
sta ends

code segment
assume cs:code,ds:data,ss:sta
main proc far
mov ax,sta
mov ss,ax
lea sp,top
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax

lea si,score
mov cl,len
xor ch,ch
l1: mov al,[si]
xor ah,ah
mov bl,10
div bl
cmp al,6
je l6
cmp al,7
je l7
cmp al,8
je l8
cmp al,9
je l9
cmp al,10
je l10
l2: inc si
loop l1
lea si,s6
mov cx,5
l3: mov dl,[si]
add dl,30H
mov ah,2
int 21h
add si,2
loop l3
ret
l6:
lea di,s6
inc word ptr [di]
jmp l2
l7:
lea di,s7
inc word ptr [di]
jmp l2
l8:
lea di,s8
inc word ptr [di]
jmp l2
l9:
lea di,s9
inc word ptr [di]
jmp l2
l10:
lea di,s10
inc word ptr [di]
jmp l2

main endp
code ends
end main

buzuibuxiu 2009-06-16
  • 打赏
  • 举报
回复
本题别人已经帮你解决,但是算法上面还有很大的缺陷
你可以先将原数除以十并取其商,然后再减去5,将用来存储不及格的个数的
变量的编译地址传给DI然后直接用刚才所得到的结果加上DI将现在偏移地址里面的数值加一,将会在很大程度上
提高程序效率,减低储蓄的复杂度,有兴趣的话可以实现一下啊!
Tippisum 2009-06-16
  • 打赏
  • 举报
回复
我不知道你用什么编译器
我使用MASM6.14编译
Segment parameters are changed
不知道是为什么(我编译时没有)

symbol redefinition
s1-s6被你做了两次标号。
当然因此还带来了一些附加错误。

syntax error:inc
inc指令错误(你连写了两个inc)
cmp指令错误(你只给了一个操作数)

killbug2004 2009-06-16
  • 打赏
  • 举报
回复
data segment 
db 49,56,100,95,63,75,84,59,60,64,69,70,100,98,72,61,59,82,75,51
c1 db 0
c2 db 0
c3 db 0
c4 db 0
c5 db 0
c6 db 0
data ends
code segment
assume cs:code,ds:data
start :
mov ax,data
mov ds,ax
mov bx,0
mov cx,20
s1:
mov al,[bx]
cmp al,60
jae next1
inc c1
next1:
inc bx
loop s1

mov bx,0
mov cx,20
s2:
mov al,[bx]
cmp al,60
jb next2
cmp al,69
ja next2
inc c2
next2:
inc bx
loop s2

mov bx,0
mov cx,20
s3:
mov al,[bx]
cmp al,70
jb next3
cmp al,79
ja next3
inc c3
next3:
inc bx
loop s3

mov bx,0
mov cx,20
s4:
mov al,[bx]
cmp al,80
jb next4
cmp al,89
ja next4
inc c4
next4:
inc bx
loop s4

mov bx,0
mov cx,20
s5:
mov al,[bx]
cmp al,90
jb next4
cmp al,99
ja next5
inc c5
next5:
inc bx
loop s5

mov bx,0
mov cx,20
s6:
mov al,[bx]
cmp al,100
jnz next6
inc c6
next6:
inc bx
loop s6

mov ax,4c00h
int 21h
code ends
end start


还有bug 自己改改
ufofind 2009-06-16
  • 打赏
  • 举报
回复
我靠你的错误也太多了
inc inc s1 你好好看一下书没有此类指令
内容概要:本文围绕“粒子群优化算法驱动的永磁同步电机电流环多参数协同辨识研究”,提出一种基于Simulink仿真实现的高精度参数辨识方法,旨在解决永磁同步电机(PMSM)在高性能电流控制中因关键参数(如电感、电阻、永磁磁链等)不准确或时变所导致的控制性能下降问题。研究构建了PMSM的精确数学模型,并在Simulink环境中搭建完整的电流环控制系统仿真平台,创新性地引入粒子群优化算法(PSO)对多个关键参数进行在线或多工况下的协同辨识。文中详细阐述了PSO算法的核心机制、适应度函数的设计原则(通常基于模型输出与实际响应的误差最小化)、参数初始化与收敛判据,并通过大量仿真实验验证了该方法在不同负载和运行条件下的辨识精度、收敛速度与强鲁棒性,有效提升了电流环的动态响应能力、抗干扰性和整体控制系统的稳定性。; 适合人群:具备电机控制理论、现代智能优化算法基础及MATLAB/Simulink仿真能力,从事电气工程、自动化控制、新能源汽车电驱动系统等领域的高校研究生、科研人员及企业研发工程师。; 使用场景及目标:①应用于高精度伺服驱动、电动汽车电驱系统等对电机参数敏感的高端装备中,实现控制器的精细化标定与自适应;②为智能优化算法在复杂非线性系统参数辨识领域的工程应用提供完整的仿真案例和技术范本;③服务于电机控制系统的故障诊断、性能评估及下一代自整定控制器的研发。; 阅读建议:建议读者结合提供的Simulink模型与MATLAB代码进行动手实践,重点剖析PSO算法与电机模型的耦合机制,深入理解适应度函数的构建逻辑,并可进一步尝试将该方法拓展至温度补偿、磁饱和等非线性因素的联合辨识,或迁移至其他类型的电机(如感应电机)控制中,以深化对数据驱动与模型驱动融合控制策略的理解。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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