汇编小实验

本文介绍了两个汇编小实验。实验一涉及输入字符串并输出,利用汇编指令读取输入并添加终止符。实验二则实现根据用户输入的字符执行不同操作,如输入'Y'显示'YES',输入'N'显示'NO',输入'X'退出程序,其他字符无响应。
摘要由CSDN通过智能技术生成

汇编小实验(一)

实验要求:实验输入字符串并且输出

源码:

data segment
buff    db 255
data ends

code segment
assume cs:code,ds:data

start:
    mov ax, data    
    mov ds, ax
    lea dx, buff    
    mov ah, 0ah
    int 21h

    lea bx,buff+1
    mov al,[bx]
    add al,2
    mov ah,0
    mov bx,ax
    mov al,24h
    mov [bx],ax

    mov dl,0ah
    mov ah,2
    int 21h

    lea dx,buff+2
    mov ah,9
    int 21h

    mov ah,4ch
    int 21h

    code ends
    end start

源码主要部分的分析:

这里写图片描述

读入字符串存在 ds:dx位置,必须要指定缓冲区

注:lea命令可以将偏移地址的数据移入寄存器中,这里我们用来实现输入字符串到buff

这里写图片描述

在缓冲区最后加入$(寄存器间址)

注:
lea bx,buff+1   : 得到存放字符串长度的地址
mov al,[bx]       : 通过寄存器间址取出字符串长度,存在al中,方便等一下加2的操作
mov al,24h       : 24h就是$的ascii的16进制,立即数的方式取得

这里写图片描述

显示换行(输出单个字符)因为输完字符串后的回车会被“吃掉”不会显示在屏幕上的,所以要另起一行

这里写图片描述

显示字符串(之前已经把data存入dx中了,中间ds没变,所以不用在把data,mov到ds)

这里写图片描述

程序结束

汇编小实验(二)

实验要求:实现输入字符串根据输入进行判断输出

源码:

CODE SEGMENT
ASSUME CS:CODE,DS:CODE
ORG 100H
START:JMP GET_KEY
YESSTR DB 'YES','$'
NOSTR DB 'NO','$'
GET_KEY:MOV AH,01H
        INT 21H
        CMP AL,'Y'
        JZ YES
        CMP AL,'N'
        JZ NO
        CMP AL,'X'
        JZ DONE
        JMP GET_KEY
YES:  MOV AX,CS
      MOV DS,AX
      MOV DX,OFFSET YESSTR
      MOV AH,09H
      INT 21H
      JMP GET_KEY
NO:   MOV AX,CS
      MOV DS,AX
      MOV DX,OFFSET NOSTR
      MOV AH,09H
      INT 21H
      JMP GET_KEY
DONE: MOV AH,4CH
      INT 21H
CODE ENDS
      END START

若通过键盘输入Y,则程序转入标号为YES的程序段显示字符串“YES”;若输入N,则程序转入标号为NO的程序段显示字符串“NO”;输入其它字符,系统无反应;输入字符X,则程序退出。

源码参考:http://blog.csdn.net/sunkun2013/article/details/12752617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值