push cx
dec cx
lea si ,buf+2
tt1: inc si
loop tt1
pop cx
以上是程序的片断(书上的练习),该程序用buf+1存数据长度(是怎么取长度的?)
还有 inc si 起到什么作用(该段是要将数值转换为ASCII)
本人初学汇编想问一下有什么好的习题可以做
...全文
1663打赏收藏
初学汇编,请教几个问题
buf db 8 db ? db 8 dup(?) push cx dec cx lea si ,buf+2 tt1: inc si loop tt1 pop cx 以上是程序的片断(书上的练习),该程序用buf+1存数据长度(是怎么取长度的?) 还有 inc si 起到什么作用(该段是要将数值转换为ASCII) 本人初学汇编想问一下有什么好的习题可以做
谢谢楼上的了,以下是详细一点的代码,也供大家参考,
我再去书上查查,
data segment
infon db odh,oah,'Please input a year:$'
y db odh,oah,' this is a leap year! $'
n db odh,oah,' this is not a leap year! $'
w dw 0
buf db 8
db ?
db 8 dup(?)
data ends
start : mov ax,data
mov ds,ax
lea dx,infon(显示字符串)
mov ah,9
int 21h
lea dx,buf
mov ah,10
int 21h
mov cl,[buf+1]
lea dx,buf+2
call datacate
call ifyears
datacate proc near
push cx;
dec cx
lea dx,buf+2
tt1: inc si
loop tt1
pop cx
mov dh ,30h
mov bl,10
mov ax,1
ll: push ax
sub byte ptr [si],dh
mul byte ptr [si]
add w,ax
pop ax
mul bl
dec si
loop ll
ret
datacate endp