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

如题所述

主要程序片段如下:
..............
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

程序没有调试,大意如些。希望能帮到你。
温馨提示:内容为网友见解,仅供参考
无其他回答

用汇编语言编写程序段实现将r6r6中的双字节数循环左移一位
用汇编语言编写程序段实现将r6r6中的双字节数循环左移一位 应将R6R6改为R6 R7中的双字节数循环左移一位 具体代码如下:ORG 0000H LJMP MAIN MAIN: MOV A,R6 MOV C,ACC.7 MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A LL: SJMP L...

利用汇编语言写代码怎样实现循环左移如图的功能。急
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位 ;;;INT 3 CODES ENDS END START ;;;以上汇编程序编译链接生成exe文件在Win7的DOS环境运行通过,;;程序...

用汇编语言实现循环左移n位
mov cx,4 ;;改变这个4可以左移相应的次数!lp: mov bx,dx shl bx,1 rcl ax,1 rcl dx,1 loop lp

用汇编语言怎么编写跑马灯程序?
跑马灯程序用汇编是很好实现的,只要用好循环移位指令就可以,以下是程序。\\x0d\\x0aORG 0000H\\x0d\\x0aLJMP MAIN\\x0d\\x0aORG 0030H\\x0d\\x0aMAIN:\\x0d\\x0a MOV A,#0FEH\\x0d\\x0a\\x0d\\x0aLOOP:\\x0d\\x0a MOV P1,A ;将控制字送端口\\x0d\\x0a\\x0d\\x0a ...

...逻辑左移一位的具体操作,用汇编语言编写,写具体些最好。
shl ax,1 ;将ax左移1位,这时候最高位移到CF中 rcl dx,1 ;将dx带进位循环左移一位,将CF(存放的是刚才ax的最高位)移到dx最低位上,同时dx所有位左移1位,dx最高位移到CF中。rcl是把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位 ...

单片机led左移然后右移循环亮灭的汇编语言
单片机led左移然后右移循环亮灭的汇编语言 电路与程序如下:本程序,经过硬件检验,完全符合题目要求。

c语言和汇编的程序八个LED依次左移逐个点亮,点亮后在依次右移逐个点亮不...
汇编语言 LEDEQU 30H ORG 0000H LJMP MAIN ORG 0030H MAIN:CLR EA MOV SP,#5FH MOV LED,#0FEH MOV R0,#7 LOOP:MOV R7,#50 LCALL DELAY MOV A,LED RL A MOV LED,A MOV P3,A DJNZ R0,LOOP MOV R0,#7 LOOP1:MOV R7,#50 LCALL DELAY MOV A,LED RR A MOV LED,A MOV P3,A ...

C语言按位左移运算规则
1 按照二进制值每位向高位(书写上是向左)移动n位;2 最高位(最左边的)n位舍去;3 最低位(最右边)填加n个0.简单起见,用char型举例如下:例一 0x12 << 3 => B00010010 << 3 => B10010 000(这里最高位的三个0被舍去,其它依次左移,最低位补三个0) => 0x90 即0x12 << 3 = ...

二进制到十进制转换(汇编语言)我看不明白
左移1位相当*2: 是shl指令 例如:mvo al,6 shl al,1 结果: al=0c --- 右移1位相当\/2: 是shr指令 例如:mov al,6 shr al,1 结果:al=3 --- 指令ror: 循环右移 例如:mov al,10011100 ror al,1 结果: al=01001110 --- 指令rol: 循环左移 例如:mov al,10011100 ror al,1 结果...

用汇编语言编写一个程序,统计寄存器AX中二进制“1”的个数,结果一位...
;个数存在BL中,若想以各种形式显示,调用不同的子函数即可(现在各种进制转换的汇编代码网上一堆)code segment assume cs:code start:mov ax,1234 mov bl,0;统计1的个数 mov cx,16;循环次数 loop1:test ax,8000h;不断的左移,与8000h比较获取1的个数 jnz loop2 inc bl shl ax,1 loop2:l...

相似回答