`
suifeng
  • 浏览: 181553 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

汇编--- echo 程序

 
阅读更多

; 统一规定:
; 1,数据段(data),代码段(code),堆栈段(stack),
; 2,过程间传递参数用(si)寄存器
; 3,mov 用于取数据,lea用于取地址,不用mov + offset 的形式
;

data segment
    msg_str   db  0ah, 0dh,"it's just a simple echo program('q' to exit)",0ah, 0dh, "$"
    msg_in  db "input:$"
    msg_out  db "output:$"
 
    ;数据输入缓冲区
    buffer  equ this byte
    maxLen  db  0ffH    ; 最大输入长度
    realLen  db ?      ; 实际输入长度
    inputData db 1024 dup('$')  ; 数据区      














    END_CHAR db  '$'
 
data ends

stack segment stack
    db 512 dup(?)
stack ends

code segment
     assume cs:code,ds:data,ss:stack
 
    start: 
        call initXS
  
         lea  si, msg_str
         call outMsg
  
         call outLine;
  
    _for:
 
         lea  si, msg_in
         call outMsg   ; 输入提示
  
         lea  si, buffer
         call inputString  ; 输入字符串
           
         call outLine    
  
         ;当输入‘q’加上回车时,就退出,而以‘q’开头的字符串不结束
         cmp  inputData, 'q' ; 判断第一个是否是‘q'
         lahf     ; 判断的结果保存在ah中
         mov  al, ah   ; 将结果转移到al中,让出ah便于保存下一个比较结果
  
         lea  bx, inputData ; 数据的基址
         mov  dl,[bx+1]  ; 获取第二个输入字符
         cmp  dl,0dh   ; 比较第二个
         lahf
    
         and  ah,al   ; 两个同时满足是退出
  
         sahf
    
         je  exit   ; 两个同时满足是退出
  
  
         lea  bx, inputData ; 数据的基址
         mov  al, realLen  ; 取输入数据长度
         mov  ah, 0   ; 屏蔽高位
         mov  di, ax   ; 准备变址寻址方式的目的地址  
         mov  al, END_CHAR
         mov  [bx+di], al 
  
         lea  si, msg_out
         call outMsg  ; 输出提示
  
         lea  si, inputData
         call outMsg  ; 输出
















































         call outLine;
         call outLine; 
         
         jmp  _for  ; 循环(这是无限循环)
  
    exit:
         mov  ah,4ch
         int  21H  
code ends







tool segment
 
    initXS proc far
         mov ax, data  ;初始化数据段(所以数据段都使用(data)的名字)
         mov ds, ax
         mov ax, stack  ;初始化数据段(所以数据段都使用(stack)的名字)
         mov ss, ax
         ret
    initXS endp
 
    outLine proc far
         mov ah, 2H
         mov dl, 0aH
         int 21H
         mov dl, 0dH
         int 21H
         ret
    outLine endp
 
    outMsg proc far
         mov ah, 9H
         mov dx, si
         int 21H
         ret
    outMsg endp
 
    inputString proc far
         mov  dx, si  
         mov  ah, 0aH  ; 输入
         int  21H
         ret
    inputString endp
 
    outDigit proc far
         mov ah, 2h
         mov dx, si
         add dl, '0'
         int 21H
         ret
    outDigit endp
 
    outChar proc far
         mov dx, si
         mov ah, 2H
         int 21H
         ret
    outChar endp
  
tool ends















































    end start

分享到:
评论

相关推荐

    汇编语言与机器码转换实例

    首先,需要创建一个汇编语言程序,该程序负责读取指定内存地址的数据,并将其打印出来。然后,可以在批处理脚本中调用这个汇编程序,并传递相应的参数。 ##### 4.1 汇编程序示例 ```assembly ; readmem.asm - 读取...

    00-1AT&T汇编语言初探(new).pdf

    本文档提供了AT&T风格汇编语言的入门学习资料,主要涉及到编写一个简单的汇编程序,程序功能为在终端输出字符串“hello, world!”。 首先,需要了解汇编语言的基本概念。汇编语言是低级语言的一种,它比高级语言更...

    基于汇编程序的智能寻迹车系统-收藏学习.pdf

    ### 基于汇编程序的智能寻迹车系统知识点详解 #### 一、智能寻迹车概述 随着第四次工业革命的到来,智能化技术日益普及并深入各行各业,从高端的航天科技到日常生活的方方面面,无不体现着智能化带来的便捷与高效...

    在Proteus中调试8086程序的方法1

    编写汇编程序时需遵循一定的结构框架,以确保程序能够被正确地编译和链接。 **程序模板示例**: ```assembly .MODEL SMALL ; 指定模型为SMALL .8086 ; 指定目标架构为8086 .STACK ; 声明堆栈段 .CODE ; 声明代码段...

    hc-sr04超声波51程序

    2. **51单片机编程**:使用C语言或汇编语言编写程序,通过控制P1口(或其他端口)发送和接收信号。程序主要包括初始化、触发超声波发射、测量回波时间、计算距离等步骤。 3. **定时器应用**:在51单片机中,定时器...

    win10下可用的win32汇编器也可编译16位程序

    打开D:\masm32\qeditor.exe再集成环境下汇编, 或运行var.bat设置环境变量后再命令行下汇编 @echo off set include=D:\masm32\include set lib=D:\masm32\lib set path=D:\masm32\bin;%path% echo on

    uart_echo.rar_Echo Echo

    UART(通用异步接收发送器)是嵌入式系统中常用的一种串行...通过以上步骤,你可以成功地创建一个UART Echo程序,用于测试和调试你的硬件或通信链路。这个过程对于任何涉及UART通信的项目都是一种基础且重要的实践。

    《汇编语言》实验教学大纲

    实验教学通常会分为几个阶段,如在开发系统和准备阶段,学生将使用如Turbo汇编这样的工具,学习如何编辑、编译和调试汇编程序。Tasm.exe是汇编器,dpmi*.*是DPMI服务相关文件,Tlink.exe是链接器,而TD.exe是强大的...

    51单片机超声波测距HC-SR04程序

    实施这个项目时,开发者需要编写C语言或汇编语言程序,包括以下关键部分: - 初始化单片机的IO口,设置为正确的输入/输出模式。 - 控制TRIG和Echo引脚发送和接收超声波信号。 - 使用定时器中断来精确测量Echo引脚高...

    cmd 汇编语言命令大全

    - **ECHO**: 打印一条消息到屏幕,常用于调试和信息输出。 - **ENDLOCAL**: 结束本地化环境变量的更改,确保后续操作不受影响。 - **ERASE**: 与DEL相同,用于删除文件。 - **EXIT**: 退出CMD程序,结束命令行会话。...

    一个经典的php小程序(对初学者很有帮助)

    在这样的程序中,我们会看到如何输出文本到网页,这涉及到PHP的echo或print语句。通过分析和运行这个程序,初学者可以快速了解PHP代码是如何在浏览器中呈现的。 总结,这个经典的PHP小程序旨在引导初学者踏入PHP的...

    Keystone.nim:Keystone汇编程序的Nim绑定

    Keystone汇编程序是用于多种架构的开源汇编器,它允许程序员将汇编语言代码转换为机器码。Nim是一种静态类型、编译型、系统级编程语言,设计目标是提供C++和Python的效率与简洁性。Keystone.nim是Nim编程语言对...

    evm-disassembler:EVM字节码转操作码反汇编程序

    EVM字节码转操作码反汇编程序 快速运行: $ echo "0x600035601c52" | python3.6 byte2op.py [0] PUSH1 0:0x00 [2] CALLDATALOAD [3] PUSH1 28:0x1c [5] MSTORE

    将任意程序转化为bat文件

    例如,如果程序是执行某个可执行文件,那么在BAT文件中对应的命令就是`@echo off`(关闭命令回显)后跟`<program_name>.exe`。 3. **使用DEBUG**:对于更复杂的操作,如读写文件、逻辑判断等,可能需要利用DEBUG的...

    HC-SR04+超声波模块+测距模块测距程序

    在单片机环境下,通常使用C或汇编语言编写程序。以下是一个基本的步骤: 1. 初始化:设置TRIG和ECHO引脚为输出和输入,配置中断或轮询模式。 2. 触发超声波:向TRIG引脚发送一个高电平脉冲,然后等待一段时间(通常...

    Linux环境下的应用程序开发

    查看或修改`PATH`可通过`echo $PATH`和编辑`/etc/profile`文件实现。 #### 多源文件的C程序开发 在大型项目中,C程序通常由多个源文件组成,每个源文件负责特定的功能模块。例如: 1. `example2_1.c`作为主程序,...

    Linux程序设计知识点整理.docx

    echo $var ``` - **read命令**: 用于从标准输入读取一行。 - `read -p "Enter your name:" name`: 提示输入。 - `-s`: 静默读取,适合密码输入。 - `-t`: 计时输入。 - **用户环境**: - `.bash_profile`, `....

    基于51单片机的超声波测距C程序

    - `<intrins.h>`:提供了内联函数支持,用于简化汇编代码的调用。 - `<STDIO.H>`:标准输入输出库,但在51单片机程序中通常不使用,这里可能为误引用。 2. **宏定义**: - `uchar` 和 `uint` 分别定义为 `...

Global site tag (gtag.js) - Google Analytics