求一汇编实例
来源:百度知道 编辑:UC知道 时间:2024/06/18 06:21:39
高手帮我弄个例子,最好注释比较详细一点的。如果能够实现功能追加30分,比较急!!谢谢了
.model small
.stack
.data
maxbyte db 255
realbyte db 0
buff db 255 dup(0)
.code
start: mov ax, @data
mov ds, ax
mov dx, offset maxbyte ;输入字符串存在buff中,maxbyte中最大可以输入的字符数,realbyte中是实际输入的字符数
mov ah, 0ah
int 21h
mov bx, offset buff
xor cx, cx
mov cl, realbyte
dec cx ;外层循环cyci从最后一个字符指向第一个字符,内层循环cycj从第一个字符指向后面
cyci: mov di, cx ;让DI指向还未比较的最后一个字符
xor si, si ;使SI指向还未比较的第一个字符
cycj: cmp si, di ;SI是否小于DI
jnb nexti ;不是,则进行下一个循环,让DI的值减一(通过LOOP指令使CX减一来实现)
mov al, [bx][si] ;将当前SI指向的字符放入AL中
cmp [bx][di], al ;SI指的字符是不是小于DI指的字符
jnb lab1 ;是则将SI加一,进行下一次比较
xchg [bx][di], al ;不是则交换DI与SI所指的字符
mov [bx][si], al
lab1:inc si
jmp cycj
nexti:loop cyci
mov cl,realbyte ;在字符串的末尾加上字符$以便使用09中断输出字符
mov si, cx
mov [bx][si], '$'
mov ah, 09h ;使用09中断输出字符
mov dx, bx
int 21h
mov