연습 문제(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
'코스웨어 > 13년 스마트컨트롤러' 카테고리의 다른 글
8월 28일 어셈블리 숙제 - 석주원 (0) | 2013.08.28 |
---|---|
어셈블리 과제 - 전영기 (0) | 2013.08.28 |
어셈블리 과제 _ 김성엽 (0) | 2013.08.28 |
어셈블리 과제 -문예진 (0) | 2013.08.28 |
중간프로젝트세미나 자료- 옵티머스드라군[김성엽 진종영 조유진] (6) | 2013.08.23 |
중간 프로젝트 세미나 자료 - 손초롱 (0) | 2013.08.22 |
[중간 프로젝트 세미나 ppt] 김성엽 진종영 조유진 - 드라군 (0) | 2013.08.22 |
전영기 문남경 ppt (1) | 2013.08.22 |