PDA

Показать полную графическую версию : Помогите изменить код в Assembler


dogkenel321
17-11-2016, 01:20
Здравствуйте, я сейчас обучаюсь и мне дали вот такое задание, нужно изменить код программы!!!
Цель работы: Освоить процесс ввода и вывода данных, преоброзование их из ASCII-формата в двоичный и обратно.
Данный код программы считает среднее арифметическое 2 чисел!!! Надо изменить код программы, что бы он считал площадь треугольника.





codesg SEGMENT PARA 'code'
ASSUME ds:datasg, ss:ctacksg, cs:codesg
ORG 100h
begin


MULT10 DW 1
BINVAL DW 0

ASCVAL DB ?
ASCVAL2 DB ?

bin1 dw 1
BINVALUME2 dw 1

mov ah,00 ;=>cls
mov al,03
int 10h
nam db 'S= $'
mov ah,09h
lea dx,nam
int 21h


namepar label byte; =>begin enter
maxlen db 20
asclen db ?
namefld db 20 dup('$')

mov ah,0ah
lea dx,namepar
int 21h ;=>end enter


;//////////////////// ;=ASC TO BIN

MOV CX,10;+++
LEA SI,asclen
MOV AX,[SI]
xor bx,bx
MOV Bl,Al
LEA SI,namefld-1
mov BINVAL,0
b20: mov AL,[si+bx]
and ax,00fh
mul mult10
add BINVAL,ax
mov ax,mult10
mul cx
mov mult10,ax

dec bx
jnz b20

;////////////////////////////////////

;S=2 CX=B=3 BX=A=1
;S=28 CX=B=42(2A) BX=A=14(E)

MOV Bx,BINVAL

MOV AX,6
MUL BX
MOV BX,4
DIV BX
MOV CX,AX ;=> CX=B

MOV BIN1,CX

MOV BX,3
DIV BX
MOV BX,AX ;=> BC=A

MOV BINVALUME2,BX

;///////////////////////////////

XOR AX,AX
XOR BX,BX
XOR CX,CX
XOR DX,DX
XOR SI,SI

MOV CX,0010
LEA SI,ASCVAL-2

MOV AX,BIN1 ; CHISLO BIN
MOV BX,3

C20: CMP Ax,0010
JB C30
OR DX,DX
DIV CX
OR DL,30H
MOV [SI+BX],DL
DEC BX
JMP C20
C30: OR AL,30H
` MOV [SI+BX],AL

;/////////////////////////////


mov ah,02
mov bh,00
mov dh,02
mov dl,00
int 10h

bkmz db 'A= $'
mov ah,09h
lea dx,bkmz
int 21h

mov [ASCVAL+2],'$'
lea si,ascval

mov ah,09h
LEA dx,[SI]
int 21h

;*****************************************

XOR AX,AX
XOR BX,BX
XOR CX,CX
XOR DX,DX
XOR SI,SI

MOV CX,0010
LEA SI,ASCVAL2-2

MOV AX,BINVALUME2 ; CHISLO BIN
MOV BX,3

A20: CMP Ax,0010
JB A30
OR DX,DX
DIV CX
OR DL,30H
MOV [SI+BX],DL
DEC BX
JMP A20
A30: OR AL,30H
` MOV [SI+BX],AL

;/////////////////////////////


mov ah,02
mov bh,00
mov dh,03
mov dl,00
int 10h

bkmz2 db 'B= $'
mov ah,09h
lea dx,bkmz2
int 21h

mov [ASCVAL2+2],'$'
lea si,ascval2

mov ah,09h
LEA dx,[SI]
int 21h






mov ah,00;=>pause
int 16h

int 20h
end begin
codesg ENDS

Iska
17-11-2016, 01:25
Ну, и? Изменяйте, учитесь. А иначе — как научитесь?!

dogkenel321
17-11-2016, 02:01
Вся проблема в том, что я немного припозднился с выполнением этого задания, а уже разбирать его нету времени. В противном случаи я бы сюда не обратился

Iska
17-11-2016, 02:46
dogkenel321, тогда Вы явно не туда обратились. Здесь, преимущественно, помогают и учат, а не просто делают домашку за других нахаляву. Нет, если, конечно, у кого бессонница будет, и совсем нечем заняться — может быть, и напишут. Но лучше Вам с этим на какие-нибудь freelance-сайты пойти, там всегда найдётся куча народа, готового за скромное вознаграждение снять тяжесть с души своего брата-студента.

dogkenel321
17-11-2016, 03:56
Я нет прошу все сделать за меня. Вы можете указать на тот кусочек программы, который нужно изменить




© OSzone.net 2001-2012