티스토리 뷰
INCLUDE Irvine32.inc
.data
SystemPrompt1 BYTE "Enter the number you want!",0 ; 입력 받기위한 출력하기 위한 변수 선언
SystemPrompt2 BYTE " * ",0 ; BYTE타입의 *의 형태로 출력하기 위함 example) 2 * 4 = Value
SystemPrompt3 BYTE " = ",0 ; BYTE 타입의 =의 형태로 출력하기 위함
val1 DWORD 2 ; DWORD 타입의 var1 변수 value = 2 init
val2 DWORD 1 ; DWROD 타입의 var2 변수 value = 1 init
num DWORD 0 ; DWORD 타입의 num 변수 value = non init
.code
main PROC
;prompt 입력
mov edx, OFFSET SystemPrompt1 ; offset으로 prompt1의 주소를 가져와서 edx에 넣는다. edx: 입출력에서 동작한다.
call WriteString ; string을 출력하는 과정 ( edx에 있는 String 값을 가져와서 출력시키기위함)
call Crlf ; 줄 바꿈
call ReadInt ; int 입력을 받는 과정
mov num, eax ; int 길이를 받는 과정 입력받은값을 eax -> num으로 넣는다.
call Crlf ; 줄 바꿈
;구구단 출력
dec num ; dec를 해주지않으면 -1만큼 단수가 출력이 되지 않으며, num값이 5로 입력되었을경우 6단까지나오게 된다. 그이유는 1단을 무시해 버리게하려는것 때문에
mov ecx, num ; L1 카운터 변수 loop Number num값을 -> eax에 다시 넣는다. Loop전에 num값을 넣으면 loop횟수를 나타낸다. LOOPA의 루프를 나타낸다.
; 첫번째 LOOP
LoopA:
mov val2, 1 ; var2 변수 초기값 1
mov num, ecx ; 카운터 변수 입력값 num까지 반복
mov ecx, 9 ; L2 카운터 변수 loop 횟수
LoopB:
mov eax, val1 ; val1 의 값 eax의 스택에 넣는다. eax에 있는 값ㅇ늘 WriteDec 으로 호출해서 출력한다.
call WriteDec ;val1
mov edx, OFFSET SystemPrompt2 ; offset로 prompt의 저장된 값을 edx에 넣느다. 그리고 edx에 있는값을 writeString의 호출로 출력한다.
call WriteString ; * 출력하기 위한 호출
mov eax, val2 ; var2의 값을 eax에 넣고 WriteDec으로 출력을 한다.
call WriteDec ; 1~9 값 호출
mov edx, OFFSET SystemPrompt3 ; promtp3 에 있는 = 을 호출해서 출력시키기 위함.
call WriteString ; = 출력
mov eax, val1 ; eax에 va1의 값과
imul val2 ; val2의 값을 곱하여 음수를 포함한 수를 곱할 때 필요한 imul 사용
call WriteDec ; 결과값 출력 : result eax에 있는 값을 출력해준다.
call Crlf ; 줄바꿈
inc val2 ; val2의 값을 증가시킨다. Ex) 2*1,2*2,2*3 ~ 2*9
loop LoopB ; L2 루프 종료
call Crlf ; 줄바꿈하기
inc val1 ; val1 변수 증가
mov ecx, num ; num에 있는 값을 cnt해서 ecx에 값을 넣는다.
loop LoopA ; L1 루프 종료
exit
main ENDP
END main
'Assembly Language' 카테고리의 다른 글
어셈블리어 중간고사 정리 2 (0) | 2017.10.26 |
---|---|
어셈블리어 중간고사 정리 (0) | 2017.10.14 |
[Assembly] 수업 정리 1 (0) | 2017.10.08 |
[Assembly] 어셈블리어의 기초 (0) | 2017.10.02 |
어셈블리어 수업 정리 1 (0) | 2017.09.17 |
- Total
- Today
- Yesterday
- db
- 노드
- 개발하는 관광이
- Controller
- 스프링
- BFS
- 코드엔진
- 학교
- C언어
- TensorFlow
- 프로그래밍
- C langauge
- 알고리즘
- Spring
- 텐서플로우
- 백준
- 머신러닝
- Android
- programming
- node.js
- 초보자를 위한 C언어 300제
- 감자개발자
- 복습
- Algorigm
- 리버싱
- 감자코딩
- 백준알고리즘
- node
- MVC
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |