当gif转换成视频第2期:汇编的几个简单问题,请各位高手帮忙?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 10:07:26
data segment ;程序从键盘输入"abc"则输出"cba"
stra db 255,0,255 dup(?) ;这里为什么前面还要255,0
strb db 255 dup(?) ;这句我懂
data ends
cseg segment
assume cs:cseg,ds:data
start:
mov ax,data
mov ds,ax
mov ah,0ah
int 21h
mov bl,stra+1 ;这里为什么用bl?
mov bh,0
mov cx,bx
lea si,stra
lea di,strb
inc bx
add si,bx
lop: ;这里是用循环输出
mov al,[si]
mov [di],al ;这两句有什么用?
dec si
inc di
loop lop
mov byte ptr[di],"$"
lea dx,strb
mov ah,9h
int 21h
cseg ends
end start
mov ah,0ah
int 21h
mov bl,stra+1 ;这里为什么用bl?
这里我想问的是用基址寄存器,而不用al,dl之类的.是不是规定这样输入就是到存bl中?
对于秋风_落叶的回答我很感谢,不过我还是不怎么会,希望有人继续指点一二.谢谢大家哦

stra db 255,0,255 dup(?) ;这里为什么前面还要255,0

255即HEX的FF,
开头用FF,和0填充.

mov bl,stra+1 ;这里为什么用bl?
字节型的当然使用BX的低位就可以了BH=00.

mov al,[si]
mov [di],al ;这两句有什么用?
将源堆栈数据拷贝到目的堆栈中,堆栈指针SI,DI已经被程序前面修改过,指向实际操作的数组.至于这样要使用AX寄存器,是因为MOV指令特殊要求只能对AX,BX,CX,DX使用,如不能写成:mov [di],[si]

此语言没研究过,随风路过/