为什么我书写的汇编程序会把end后面的指令也给执行?

K_s_e_i 2024-02-29 19:54:13

为什么我书写的汇编程序会把end后面的指令也给执行?

DATA    SEGMENT    USE16
    CRLF    DB    0DH,0AH,'$'
    BUF1    DB    50
            DB    0
            DB    50    DUP(0)
    BUF2    DB    50
            DB    0
            DB    50    DUP(0)
    RES1    DB    'MATCH!$'
    RES2    DB    'NO    MATCH    !$'        
DATA    ENDS
STACK    SEGMENT    USE16    STACK
    DB    200    DUP(0)
STACK    ENDS
CODE    SEGMENT    USE16    
    ASSUME    DS:DATA,SS:STACK,CS:CODE
START:    MOV    AX,DATA
        MOV    DS,AX
        LEA        DX,BUF1        ;输入buf1
        MOV    AH,10
        INT        21H
        LEA        DX,CRLF        ;换行
        MOV    AH,9
        INT        21H
        LEA        DX,BUF2        ;输入buf2
        MOV    AH,10
        INT        21H
        LEA        DX,CRLF        ;换行
        MOV    AH,9
        INT        21H
        MOV    CL,BUF1+1
        MOV    CH,BUF2+1
        CMP    CL,CH        ;比较buf1和buf2长度
        JNE        NOMATCH
        MOV    BX,2
LOOPA:    MOV    AL,BUF1[BX]    ;循环判断buf1和buf2中字符是否相同
        MOV    AH,BUF2[BX]
        CMP    AL,AH
        JNE        NOMATCH
        INC        BX
        DEC        CL
        JNZ        LOOPA
        LEA        DX,RES1
        MOV    AH,9
        INT        21H
        JMP        EXIT
NOMATCH:LEA    DX,RES2
        MOV    AH,9
        INT        21H
EXIT:    NOP
CODE    ENDS
        END        START


理论上nop是代码的最后一句,但是在td调试的时候可以运行到nop下面的指令,是代码有问题吗?
        

 

...全文
401 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2024-03-07
  • 打赏
  • 举报
回复

你应该在END之前写两句:

MOV AX,4C00H
INT 21H

zara 2024-03-01
  • 打赏
  • 举报
回复

这个,不是代码的问题,是 dos系统运行程序机制的缺陷。
那些,其实并不是你的汇编程序 END 语句之后的内容,尽管你的源程序在 END 后并没有东西,不管有没有,都不会出现在后来的 exe 可执行程序里的。那些,只是内存里的随机数据,多可能是之前运行的程序的遗迹;程序运行结束后,dos 并不对其曾经占用过的内存进行清理(现在流行的 windows各版本也没有吧),所以保留着之前的样子;对程序的运行,无论是代码还是数据,dos都没有访问范围的检验核查和控制机制,所以,可以随意到任意的地方,只要代码乐意或有bug,更不用说调试软件里可以随意手工修改 cs:ip 及其它任意的寄存器了。

内容概要:本文围绕基于电感电容电流环PI与前馈补偿矩阵构造的跟网型储能变流器,开展dq坐标系下的阻抗理论建模与Simulink仿真对比研究。通过建立储能变流器在dq域的数学模型,设计包含电感电流内环、电容电流中间环和电压外环的多环控制结构,并引入前馈补偿矩阵以提升系统的动态响应能力和稳定性。在此基础上,采用小信号分析法推导系统的输出阻抗模型,构建完整的dq域阻抗理论框架,并利用Simulink平台搭建高保真仿真模型进行频域扫频验证,实现理论建模与仿真结果的精确对比,深入分析控制参数对系统阻抗特性的影响规律,揭示其在抑制并网系统振荡、提升稳定性方面的关键作用,为新能源并网系统的稳定性分析与优化设计提供坚实的理论支撑和技术路径。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、储能系统、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握跟网型储能变流器在dq域的阻抗建模方法;②理解多环控制与前馈补偿对系统阻抗特性的影响机制;③实现理论阻抗模型与Simulink仿真扫频结果的对比验证,支撑并网稳定性分析。; 阅读建议:学习者应结合控制理论与电力电子变换器知识,重点关注数学推导与仿真建模的一致性,建议动手复现Simulink仿真模型并进行参数敏感性分析,以深化对阻抗重塑机理的理解。

21,500

社区成员

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

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