Пояснение строчек кода - Assembler

Узнай цену своей работы

Формулировка задачи:

Нам дали код и сказали , чтоб мы в нем сами разобрались, код вычисляет факториал 1000!, поясните каждую строчку , пожалуйста
.486p
.model tiny
segment byte public 'CODE' use16
 assume cs:seg000
org 100h
assume es:nothing, ss:nothing, ds:seg000, fs:nothing, gs:nothing
seg000:0100
 
public start
proc near
std
mov     word_10D7F, 0BB8h
sub     word_10D7F, 2
lea     di, byte_101C7
add     di, word_10D7F
mov     si, di
mov     word ptr [di], 1
lodsw
 
loc_1011B:                            
mul     word_10D81
stosw
 
loc_10120:                       
mov     cx, dx
mov     ax, [si]
cmp     ax, 0
jnz     short loc_1014C
cmp     word ptr [si-2], 0
jnz     short loc_1014C
add     [si], cx
dec     word_10D81
jz      short loc_1015B
lea     si, byte_101C7
add     si, word_10D7F
 
loc_1013F: 
lodsw
cmp     ax, 0
jz      short loc_1013F
mov     di, si
add     di, 2
jmp     short loc_1011B
 
loc_1014C:
mul     word_10D81
stosw
add     [si], cx
adc     dx, 0
sub     si, 2
jmp     short loc_10120
 
loc_1015B:                        
mov     bp, di
sub     bp, 2
lea     di, byte_101C7
add     di, word_10D7F
mov     si, di
xor     bx, bx
xor     cx, cx
 
loc_1016E:            
cmp     di, bp
jz      short loc_1017C
lodsw
rol     ax, 8
stosw
add     cx, 2
jmp     short loc_1016E
 
loc_1017C:
mov     bp, cx
cld
add     di, 2
mov     bx, di
lea     si, byte_11D22
cmp     byte ptr [di], 0
jnz     short loc_1018F
inc     bx
dec     bp
 
loc_1018F:                
mov     cx, bp
xor     ax, ax
mov     di, bx
 
loc_10195:
mov     al, [di]
div     byte_11D24
stosb
loop    loc_10195
or      ah, 30h
cmp     ah, 39h
jbe     short loc_101A9
add     ah, 7
 
loc_101A9:
mov     [si], ah
dec     si
 
loc_101AC:
cmp     word ptr [di-2], 0
jnz     short loc_1018F
sub     di, 2
cmp     di, 1C7h
ja      short loc_101AC
inc     si
mov     dx, si
mov     ah, 9
int     21h  
 
xor     ax, ax
int     16h            
 
retn
start           endp

byte_101C7      db 0BB8h dup(0) 
 
word_10D7F      dw 0                
                                     
word_10D81      dw 3E8h                
                                     
db 0F9Fh dup(0)
byte_11D22      db 0, 24h         
byte_11D24      db 0Ah             
seg000          ends
 
seg000:1D24                 end start

Решение задачи: «Пояснение строчек кода»

textual
Листинг программы
mov     cx, dx ;поместить в регистр cx значение из регистра dx

Объяснение кода листинга программы

Список действий в коде:

  1. mov cx, dx; поместить в регистр cx значение из регистра dx

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5