您的位置:首页 > 其它

汇编 [计算平台长度] 用的自己的想法,至于长度的显示,超过双数,修改一下就行了,懒得修改了!

2013-08-15 17:07 351 查看


assume cs:code,ds:data
data segment
input db "please input a word:$"
PTlength db 0dh,0ah,"PDlength:$"
PT db 0dh,0ah,"PT:$"
buf db 50
db ?
db 50 dup(?)
ddw dw 0
dz dw 0
data ends
code segment
start:
mov ax,data
mov ds,ax
lea dx,input
mov ah,9
int 21h
;输入字符
lea dx,buf
mov ah,0ah
int 21h
;进行判断
call pd
;将平台长度显示出来
lea dx,PTlength
mov ah,9
int 21h
mov dx,[ddw]
add dl,30h
mov ah,2
int 21h
;将地址显示出来
lea dx,PT
mov ah,9
int 21h
mov cl,byte ptr[ddw]
ZRS:
mov bx,[dz] ;取地址的地址
mov dl,byte ptr[bx]
mov ah,2
int 21h
loop ZRS

exit:
mov ax,4c00h
int 21h

pd proc near
;初始化---------------------------
mov dl,1   ;外部
mov dh,1   ;内部
mov bx,0   ;长度
mov di,0
mov si,1
lea bp,buf+2
mov cl,buf+1
mov ch,0
mov dz,bp
mov byte ptr [ddw],dl
;---------------------------------
jmp Frs
Grs:
mov bl,0
add bl,dl
mov dl,1       ;清除
mov si,1
Frs:
cmp dh,cl          ;是否是最后一个,是则进入Ers
jz Ers

Srs:
add bp,bx
mov al,byte ptr[bp]
mov ah,byte ptr[bp+si]

cmp al,ah
jnz  Drs           ;不相等,则转入Drs

inc si             ;变址+1
inc dl
inc dh
and bx,0
jmp Frs

Drs:
inc dh
cmp dl,byte ptr[ddw]
jbe Grs               ;如果长度小于等于ddw,则转入Grs
mov byte ptr [ddw],dl
mov dz,bp
jmp Grs
Ers:
cmp dl,byte ptr[ddw]
jbe EErs
mov byte ptr [ddw],dl
mov dz,bp
EErs:
ret
pd endp

code ends
end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐