80x86汇编语言:字符串移动

在键盘输入一个字符串,并将其从左向右滚动显示,求完整程序。


题目链接:http://zhidao.baidu.com/question/2265949993258693388.html


做而论道编写的程序如下:


ASSUME  CS:CODE, DS:DATA


DATA  SEGMENT

    MSG1    DB  13, 10, 'Please input string: ', 13, 10, '$'

    IN_MAX  DB  18

    IN_N    DB  ?

    IN_BUF  DB  20 DUP(?)

    MSG2    DB  90 DUP('$')

DATA  ENDS

 

CODE  SEGMENT


START:

    MOV   AX, DATA

    MOV   DS, AX

;---------------------------

    LEA   DX, MSG1

    MOV   AH, 9

    INT   21H

    LEA   DX, IN_MAX

    MOV   AH, 10

    INT   21H

    CMP   IN_N, 0

    JZ    EXIT

;---------------------------

RIGHT:

    MOV   SI, 0

    MOV   DI, 0

    MOV   MSG2[BX - 1], ' '

    ADD   DI, BX

    CALL  UP_DISP

    LEA   DX, MSG2

    MOV   AH, 9

    INT   21H

    MOV   AH, 2

    MOV   DL, 13

    INT   21H


    INC   BX

    CALL  DELAY

    CMP   DI, 80

    JNZ   RIGHT

;---------------------------

EXIT:

    MOV   AH, 4CH

    INT   21H

;---------------------------

UP_DISP:

    MOV   CH, 0

    MOV   CL, IN_N

LP1:

    MOV   AL, IN_BUF[SI]

    MOV   MSG2[DI], AL

    INC   SI

    INC   DI

    CMP   DI, 80

    JZ    EXIT_UP

    LOOP  LP1

EXIT_UP:

    RET

;---------------------------

DELAY:

    PUSH  CX

    PUSH  DX

    MOV   DX, 1000

DL1:

    LOOP  $

    DEC   DX

    CMP   DX, 0

    JNZ   DL1

    POP   DX

    POP   CX

    RET

;---------------------------

CODE ENDS

    END START


经过实验,本程序可以满足题目要求。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值