왕쌍 어셈블리 언어 부품 VIII (함수가 호출 물품과 함께 사용 RET)

문제 : 분할을 할 DIV 사용하는 경우, 저장 레지스터의 범위에 걸쳐 너무 많은 사업의 결과가있을 수 있습니다,이 오류가 분할 오버 플로우라고합니다.

분할 오버 플로우를 해결하기위한 공식은 :

X : 배당, 범위 [0, FFFFFFFF]
N : 제수, 범위 [0, FFFF]
H : X-16 높은 범위 [0, FFFF]
L : X-낮음 16, 범위 [0, FFFF]

INT () : 서술 운영자, 제공자 가지고, 예를 들어, INT (10분의 38) = 3.
REM () 연산자의 설명 예를 들어, 나머지 복용 REM (10분의 38) = 8

화학식 : X / N = INT (H / N) * 65536 + [REM (H / N) * 65536 + L] / N

해결 방법 :
1, 인수 높은 데이터와 낮은 데이터 제수입니다

2. 결과 :
'내부 등의 하이 (H / N) * 65536
중의 낮은 [REM (H / N) * 65536 + L] 목록 / N,
나머지는 [REM (H / N) * 65536 + L] / N 나머지

3 공정 :
다음 DIV CX (1) 우선, 고역 통과 데이터 AX 들어오는 제수 CX,
AX INT의 값 (H / N)를 얻을 수있다 높은 결과
DX (2) 다음에, 값 65536을 곱하여 REM이다 (H / N)은,이 시간 있도록 16 비트, 32 비트 높은 데이터 사용량 DIV DX 16 비트 상당 고배당 낮은 배당 AX의 존재 유무 인 왼쪽에 상당 DX는 주문 데이터를 저장하고있다
(3) 마지막으로, 낮은 입력 데이터 AX는, DIV CX, 사업은 낮은 결과이며, 나머지는 나머지의 결과입니다.

쓰기 코드 :
주요 기능

;计算1000000/10=F4240H/0AH,结果为186A0H

 mov ax,4240h;数据的低位
 mov dx,0fh;数据的高位
 mov cx,0ah;除数
 call divdw;调用子函数
 mov ax,4c00h
 int 21h

에 대한 기능

divdw:
 push si
 push bx;保存现场
 mov bx,ax
 mov ax,dx;把数据的高位传入AX
 mov dx,0
 div cx;结果AX的数值为结果的高位,DX的数值为rem(H/N)
 mov si,ax
 mov ax,bx;把数据的低位传入AX
 div cx;结果AX的数值为结果的低位,DX的数值为结果的余数
 mov cx,dx
 mov dx,si
 pop bx;恢复现场
 pop si
ret;函数返回

호출 명령

호출 명령 처리를 실행한다
(1) 또는 현재 IP CS와 IP 스택에
(2) 전송

호 레퍼런스
대응한다
IP 밀어
PTR 부호 근처를 JMP

지금까지 PTR 레이블을 호출하는 것은
동일하다
푸시 CS
푸시 IP
JMP FAR의 PTR 라벨

메모리 호출 워드의 PTR 주소
에 해당
는 IP 푸시
메모리 JMP의의 말씀 PTR 주소
예 :

mov sp,10h
mov ax,0123h
mov ds:[0],ax
call word ptr ds:[0]
;执行后,(IP)=0123h,(sp)=0EH

메모리의 DWORD PTR 주소를 호출
에 해당하는
연사가 밀어
는 IP 밀어
메모리의 JMP DWORD PTR 주소를

예를 들면 :

mov sp,10h
mov ax,0123h
mov ds:[0],ax
mov word ptr ds:[2],0
call dword ptr ds:[0]
;执行后,(CS)=0,(IP)=0123h,(sp)=0cH

RET와 retf

명령 데이터 스택, IP의 내용을 거의의 전송을 가능하게 마지막 ret
, CS와 IP의 내용을 수정, retf 명령 데이터 스택을 멀리 전송을 가능하게

통화 및 RET를 이용하여
프레임의 소스를 갖는 서브 다음과 같다 :

assume cs:code
code segment
 main:
 call sub1
 :
 :
 mov ax,4c00h
 int 21h
sub1:
:
:
call sub2
:
:
ret

sub2:
:
:
ret
code ends
end main
출시 팔 개 원래 기사 · 원의 칭찬 0 · 조회수 78

추천

출처blog.csdn.net/qq_41955402/article/details/104309070