diy.inc

本文介绍了一组用于显示字符串及字符的汇编语言函数,包括字符串显示、字符显示及内存复制等基本功能。这些函数可用于实现简单的文本界面操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个库,名字先这样定着

;Disp_Str-------------------------------------------------------------
Disp_Str:
 push ebp
 mov ebp,esp
 
 push eax
 push ebx
 push  esi
 push edi
 
 mov esi,[ebp + 8]
 mov edi,[Disp_Pos]
 
.begin:
 lodsb
 test al,al
 je .exit
 cmp al,0ah
 jne .disp
 push eax
 mov eax,edi
 mov bl,160
 div bl
 and ax,0ffh
 inc ax
 mov bl,160
 mul bl
 mov edi,eax
 pop eax
 jmp .begin
.disp:
 mov ah,0ch
 mov [gs:edi],ax
 add edi,2
 jmp .begin
.exit:
 mov [Disp_Pos],edi
 
 pop edi
 pop esi
 pop ebx
 pop eax
 
 pop ebp

 ret 4
;end of Disp_Str------------------------------------------------------

;Disp_Return----------------------------------------------------------
Disp_Return:
 push ebp
 mov ebp,esp
 
 push Return
 call Disp_Str
 
 pop ebp
 
 ret
;end of Disp_Return---------------------------------------------------

;Disp_Al--------------------------------------------------------------
Disp_Al:
 push eax
 push ecx
 push edi
 
 mov edi,[Disp_Pos]
 mov ecx,2
 
 push eax
 shr al,4
.loop:
 and al,0fh
 cmp al,9
 ja .letter
 add al,'0'
 jmp .disp
.letter:
 sub al,10
 add al,'A'
.disp:
 mov ah,0ch
 mov [gs:edi],ax
 add edi,2
 cmp ecx,1
 je .exit
 pop eax 
 loop .loop
 
.exit:
 mov [Disp_Pos],edi
  
 pop edi
 pop ecx
 pop eax

 ret
;end of Disp_Al-------------------------------------------------------

;Disp_32Bit_Int-------------------------------------------------------
Disp_32Bit_Int:
 push ebp
 mov ebp,esp
 
 push eax
 push esi
 
 mov esi,[ebp + 8]
 mov eax,[esi]
 rol eax,8
 call Disp_Al
 rol eax,8
 call Disp_Al
 rol eax,8
 call Disp_Al
 rol eax,8
 call Disp_Al
 
 pop esi
 pop eax
 
 pop ebp
 
 ret 4
;end of Disp_32Bit_Int------------------------------------------------

;Memory_Copy----------------------------------------------------------
;C函数 Mem_Copy(void *esi,void *edi,len ecx)
;ds:esi -> es:edi
;调用前默认ds,es已经填入
Memory_Copy:
 push ebp
 mov ebp,esp
 
 push ebx
 push ecx
 push esi
 push edi
 
 mov ecx,[ebp + 16]
 mov edi,[ebp + 12]
 mov esi,[ebp + 8]

.1:
 cmp ecx,0
 je .2
 mov byte bl,[ds:esi]
 inc esi
 
 mov byte [es:edi],bl
 inc edi
 
 dec ecx
 jmp .1
 
 .2:
 
 pop edi
 pop esi
 pop ecx
 pop ebx
 pop ebp
 
 ret 12

;end of Memory_Copy---------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值