Найти значения регистра после некоторых инструкций MOV, XOR, RCL и DIV - PullRequest
0 голосов
/ 30 марта 2019

Пожалуйста, помогите мне для этого кода сборки. Мне нужно найти значения AX, BX и DX, но я не могу этого сделать. Я действительно ценю твою помощь. Спасибо.

MOV AX,0d
RCL AX,1h
MOV AX,e213h 
MOV BX,d123h
XOR AX,BX
XOR BX,AX
XOR AX,BX
RCL AX,10h    ; Give AX=   BX=

MOV AX,215h
MOV DX,2h
MOV BX,8h
DIV BX    ; Give AX=   BX=   DX=

INT 20h

1 Ответ

2 голосов
/ 30 марта 2019

Ваш вопрос кажется неясным, однако я пытаюсь ответить. Если вы хотите узнать значения регистров, у вас есть по крайней мере два способа: первый включает выполнение кода на бумаге, для которого, я полагаю, это упражнение предназначено. Последнее включает создание процедуры в виде встроенной сборки в MASM или C.

Поскольку, мне кажется, это задание, просто сделайте это на бумаге:

; ax=?, bx=?, dx=? this is the starting point. assume all registers are unknown
MOV AX,0d
; ax=0, bx=?, dx=? mov performs copy between registers, 0d is 0 (in decimal)
RCL AX,1h
; ... and so on... If you don't known where to look, have a look at for RCL: https://c9x.me/x86/html/file_module_x86_id_273.html
MOV AX,0e213h 
MOV BX,0d123h
XOR AX,BX
XOR BX,AX
XOR AX,BX
RCL AX,10h    ; here1 Give AX=   BX=

MOV AX,0215h
MOV DX,2h
MOV BX,8h
DIV BX    ; here2 Give AX=   BX=   DX=

INT 20h

Здесь вы можете просмотреть все коды операций и мнемонику.

...