본문 바로가기
코스웨어/13년 스마트컨트롤러

어셈블리 숙제 - 조유진

by 알 수 없는 사용자 2013. 8. 28.
728x90
반응형

연습 문제(Introduction to 80x86 Assembly Language and Computer Architecture pdf 120p)


소스 코드

.386

.MODEL FLAT


ExitProcess PROTO NEAR32 stdcall, dxExitCode:DWORD


INCLUDE io.h


cr    EQU    0dh ; 캐리지 리턴

Lf    EQU    0ah ; 라인 피드


.STACK 4096


.DATA

Prompt1 BYTE "This program will evaluate the expression", cr, Lf, Lf ; 출력할 문장1 시작

BYTE " 2 ( - x + y - 1 ) + z", cr, Lf, Lf

BYTE "for your choice of integer values.", cr, Lf, Lf

BYTE "Enter value for x : ", 0 ; 여기까지 출력됨

Prompt2 BYTE "Enter value for y : ", 0 ; 출력 문장 2

Prompt3 BYTE "Enter value for z : ", 0 ; 출력 문장 3

Value BYTE 16 DUP( ? ) ; 계산 결과 값

Answer BYTE cr, Lf, "The result is " ; 결과 출력 문장 시작

Result BYTE 6 DUP( ? )

BYTE cr, Lf, 0 ; 결과 출력 문장 끝


.CODE

_start:

output Prompt1 ; 문장 1 출력

input Value, 16 ; x값 입력

atoi Value ; ASCII to Integer

neg ax ; 값 반전(-, 2의 보수)

mov dx, ax ; dx에 반전된 x값을 넣음


output Prompt2 ; 문장 2 출력

input Value, 16 ; y값 입력

atoi Value ; ASCII to Integer

add dx, ax ; dx에 y값을 더함( -x+y )


dec dx ; dx에서 1을 뺌( -x+y-1 )


add dx, dx ; dx에 dx의 값을 더함( 2(-x+y-1) )


output Prompt3 ; 문장 3 출력

input Value, 16 ; z값 입력

atoi Value ; z값을 정수형으로 변환

add dx, ax ; dx에 변환된 z값을 더함( 2(-x+y-1))+z )


itoa Result, dx ; 결과 값이 저장된 dx의 값을 ASCII로 바꾸어 Result에 넣음


output Answer ; Answer 문장 출력, 값도 함께 출력됨.


INVOKE   ExitProcess, 0 ; 끝

        

PUBLIC  _start


END


실행 결과



숙제 2

.386

.MODEL FLAT


ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD


INCLUDE io.h


cr EQU 0dh

LF EQU 0ah


.STACK 4096


.DATA


prompt1 BYTE "This program will find the area of a rectangle", cr, LF, LF

BYTE "Width of rectangle? ", 0

prompt2 BYTE "Length of rectangle? ", 0

value BYTE 16 DUP (?)

answer BYTE cr, LF, "The area of the rectangle is "

BYTE cr, LF, 0


.CODE


_start:

Prompt: output prompt1

input value, 16

atod value

mov ebx, eax


output prompt2

input value, 16

atod value

mul ebx


dtoa area, eax

output answer


INVOKE ExitProcess, 0


PUBLIC _start

END



숙제 3

.386

.MODEL FLAT


ExitProcess PROTO NEAR32 stdcall, dxExitCode:DWORD


INCLUDE io.h


cr    EQU    0dh

Lf    EQU    0ah


.STACK 4096


.DATA

Prompt1 BYTE "Enter length : ", 0

Prompt2 BYTE "Enter width : ", 0

Prompt3 BYTE "Enter height : ", 0


Value WORD ?


Answer BYTE cr, Lf, "The surface area is "

SHIT BYTE 11 DUP( ? )

BYTE cr, Lf, 0

        

.CODE

_smart:

; 2*(length*width + length*height + width*height).


output Prompt1

input Value, 11

atoi Value

mov ebx, eax


output Prompt2

input Value, 11

atoi Value


mov ecx, eax

output Prompt3

input Value, 11

atoi Value


mov edx, eax


mov eax, ebx

imul eax, ecx


imul ebx, edx


add eax, ebx


imul ecx, edx


add eax, ecx


add eax, eax

dtoa SHIT, eax


output Answer


INVOKE ExitProcess, 0

        

PUBLIC  _smart


END


728x90