用汇编语言编写一个让“123456”依次向左循环左移显示的程序。

用汇编语言编写一个让“123456”依次向左循环左移显示的程序。,第1张

主要程序片段如下:

..............

disBuffer db '123456$' 要显示的字符串

col db 5在屏幕上的位置

row db 10

..............

main:

mov ax,200h

mov bx,0

mov dl,[col]

mov dh,[row]

int 10h以上几行用于定位当前光标位置

lea dx,disBuffer

mov ax,0900h

int 21h显示字符串

call funcRL

mov cx,1延时控制,可以根据要求设置1、2、3……

call funcDelay

mov ah,0bh

int 21h看下键盘有无输入,如果有就退出程序

or al,al

jz main没有输入,去继续循环

mov ax,4c00h

int 21h

funcRL: 左移一位的子程序

push ax

push cx

push si

mov cx,5

lea si,disBuffer

mov bl,[si]

inc si

RlLoop:

mov al,[si+1]

mov [si],al

inc si

loop RlLoop

mov [si],al

pop si

pop cx

pop ax

ret

funcDelay: 延时子程序,如果没有延时,太快了,无法看清字符

push bx

push cx

push dx

dLoop1:

mov bx,1000h

dLoop2:

mov dx,0ffffh

dLoop3:

sub dx,1

jnz dLoop3

sub bx,1

jnz dLoop2

loop dLoop1

pop dx

pop cx

pop bx

ret

程序没有调试,大意如些。希望能帮到你。

.286

CODES SEGMENT

ASSUME CS:CODES

ORG 100H

START: MOV DX,5678H

MOV CX,0F000H

AND CX,DX 提取原DX的高4位保存于CX

SHR CX,12 CX低4位即原DX高4位

MOV AX,1234H

MOV BX,0F000H

AND BX,AX 提取原AX的高4位保存于BX

SHR BX,12 使BX低4位即原AX高4位

SHL AX,4 AX左移4位,低4位自动补0

OR AX,CX 使原DX高4位成为AX低4位

SHL DX,4 DX左移4位,低4位自动补0

OR DX,BX 使原AX高4位成为DX低4位

INT3

CODES ENDS

END START

以上汇编程序编译链接生成exe文件在Win7的DOS环境运行通过,

程序运行结果:DX=6781H, AX=2345H


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11270143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存