.data
fnf: .ascii "The file was not found: "
###important: UPDATE THIS PATH TO WHERE YOU SAVED THE TEXT FILE
#asciiz directive creates null-terminated string
file: .asciiz "C:/Users/mmono/OneDrive/Documents/input.txt"
pstring:.asciiz " characters.\nFile contents:"
buffer: .space 1024
.text
# These lines opens and reads the file containing text to be modified
main:
li $v0, 13 # System call to open file, $v0 set to file descriptor
# $v0 negative if failed to open file
la $a0, file # Load file to read, $a0 set to address of string
# containing file name
li $a1, 0 # Set read-only flag
li $a2, 0 # Set mode
syscall
add $s0, $v0, $zero # Save file descriptor in $v0 to new register $s0
# because $v0 will be used in other system calls
blt $v0, 0, err # Go to handler if failed to open file
# These lines read text from file
read:
li $v0, 14 # System call to read file
add $a0, $s0, $zero # Load file descriptor to $a0
la $a1, buffer # Set $a1 to address of input buffer where
# text will be loaded to
li $a2, 1024 # Set $a2 to number of characters to read
syscall
#after read, $v0 will have number of bytes read
#set last byte to null
la $a0, buffer
add $a0, $a0, $v0 #address of byte after file data
sb $zero, 0($a0)
#initialize some registers
init:
li $t0, 0 # $t0 will be message character iterator i
# initialize i=0
add $s1, $a1, $zero # save address start of buffer
#loop to count characters, exclude white spaces and
loop:
add $s2, $s1, $t0 # $s2 <= A + i, address of current character
# A: address start of buffer
lb $s3, 0($s2) # load char in message[i] to $s3
beq $s3, $zero, print #null, reached end of buffer
addi $t0, $t0, 1 #i++
j loop #continue counting
# Print Data to console
print:
li $v0, 1 # System call to print integer
add $a0, $t0, $zero # Load to $a0 integer to print
syscall
#print "File contents:"
li $v0, 4 # System call to print string
la $a0, pstring # Load to $a0 string to print
syscall
#print actual file contents
li $v0, 4 # System call to print string
la $a0, buffer # Load to $a0 string to print
syscall
# Close File
close:
li $v0, 16 # Close File Syscall
add $a0, $s0, $zero # Load File Descriptor
syscall
j done # Goto done
# Error
err:
li $v0, 4 # System call to print string
la $a0, fnf # Load Error String
syscall
# Done
done:
li $v0, 10 # Exit Syscall
syscall
이이 프로그램이 읽고있는 파일입니다에 적절한 자본을 가지고 있습니다. 그것은 input.txt라고합니다.는 어셈블리 코드
이것은 매우 유익하지만 더 많은 사진이 있으면 좋겠다. WOW !!!!!!!!!!! 너무 멋지다! 문제를 확장 한 후속 기사를 작성해야한다고 생각합니다. 우리는 당신처럼 더 통찰력있는 의견을 필요로합니다. 대단하다! 다른 사람에게 쓰기!
이 프로그램은 기간 후 첫 번째 문자는 개행 (줄 바꿈), 느낌표 또는 물음표가 대문자되도록 .txt 파일을 편집하고, 모든 원치 않는 총액을 제거해야합니다.
ASCII 코드를 변경하고 xor 비트를 사용하여 ASCII 문자를 변경 한 다음 문자로 변환한다고 가정합니다. 이것은 10 진수의 비트 열 "00100000"32가 대문자를 변경하기 위해 논리 연산자 "XOR"와 함께 사용될 수 있기 때문입니다.
의 대문자 "A"에 대한 8 비트 ASCII 표현은 01000001입니다. 이것을 0010000과 XOR하면이 소문자 "a"에 대한 ASCII 코드 인 01100001이 생성됩니다.
그러나이 작업은 문자에서만 수행 할 수 있으며 모든 특수 문자는 그대로 유지됩니다.
그래서 나는 다음과 같은 몇 가지 코드를 사용할 필요가 있다고 생각 : xori $ S3, $ s3,32
하지만 내 프로그램에서이를 구현하는 방법을 잘하지 않습니다. 도와 주셔서 감사합니다.