I need my c++ code converted to MASM (assembly language).
The instructions below:
write an assembly program that does the following;
1. count and display the number of words in the user input string.
2. Flip the case of each character from upper to lower or lower to upper.
For example if the user types in: "Hello thEre. How aRe yOu?"
Your output should be:
The number of words in the input string is: 5
The output string is : hELLO THeRE. hOW ArE YoU?
//my C++ code
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
// function that takes a word and flip the letters from
lowercase to uppercase and vice versa
string flipWord(const string word){
stringstream flipped;
for(int index=0;index<word.length();index++){
char letter = word.at(index);
if('a'<=letter &&
letter<='z'){
flipped<<char(letter - ('a'-'A'));
}else if('A'<=letter &&
letter<='Z'){
flipped<<char(letter + ('a'-'A'));
}else{
flipped<<letter;
}
}
string flippedString;
flipped>>flippedString;
return flippedString;
}
int main(){
int wordCount=0;
cout<<"Enter a sentence: ";
string sentence;
string word;
stringstream flippedSentence;
string flippedString;
getline(cin,sentence); // reads the whole line
stringstream ss(sentence); // pushes the line to a
string stream
// for each word in string stream
// invoked the flipWord and pushes the word into
another string stream
// at the same time count the words
while(ss>>word){
flippedSentence<<flipWord(word)<<' ';
wordCount++;
}
cout<<"The number of words in the input string
is: "<<wordCount<<endl;
// prints the string stream one word at a time
while(flippedSentence>>word){
cout<<word<<" ";
}
}
//please convert to asm
Assembly language :- (x86-64 gcc 5.1 compiler)
Program :-
std::operator|(std::_Ios_Openmode, std::_Ios_Openmode):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
or eax, edx
pop rbp
ret
flipWord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >):
push rbp
mov rbp, rsp
push rbx
sub rsp, 424
mov QWORD PTR [rbp-424], rdi
mov QWORD PTR [rbp-432], rsi
mov esi, 8
mov edi, 16
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rax, [rbp-416]
mov esi, edx
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream(std::_Ios_Openmode)
mov DWORD PTR [rbp-20], 0
.L8:
mov eax, DWORD PTR [rbp-20]
movsx rbx, eax
mov rax, QWORD PTR [rbp-432]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const
cmp rbx, rax
setb al
test al, al
je .L4
mov eax, DWORD PTR [rbp-20]
movsx rdx, eax
mov rax, QWORD PTR [rbp-432]
mov rsi, rdx
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::at(unsigned long) const
movzx eax, BYTE PTR [rax]
mov BYTE PTR [rbp-21], al
cmp BYTE PTR [rbp-21], 96
jle .L5
cmp BYTE PTR [rbp-21], 122
jg .L5
movzx eax, BYTE PTR [rbp-21]
sub eax, 32
movsx eax, al
lea rdx, [rbp-416]
add rdx, 16
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
jmp .L6
.L5:
cmp BYTE PTR [rbp-21], 64
jle .L7
cmp BYTE PTR [rbp-21], 90
jg .L7
movzx eax, BYTE PTR [rbp-21]
add eax, 32
movsx eax, al
lea rdx, [rbp-416]
add rdx, 16
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
jmp .L6
.L7:
movsx eax, BYTE PTR [rbp-21]
lea rdx, [rbp-416]
add rdx, 16
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
.L6:
add DWORD PTR [rbp-20], 1
jmp .L8
.L4:
mov rax, QWORD PTR [rbp-424]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
mov rdx, QWORD PTR [rbp-424]
lea rax, [rbp-416]
mov rsi, rdx
mov rdi, rax
call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
nop
lea rax, [rbp-416]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
jmp .L14
mov rbx, rax
mov rax, QWORD PTR [rbp-424]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
jmp .L11
mov rbx, rax
.L11:
lea rax, [rbp-416]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
mov rax, rbx
mov rdi, rax
call _Unwind_Resume
.L14:
mov rax, QWORD PTR [rbp-424]
add rsp, 424
pop rbx
pop rbp
ret
.LC0:
.string "Enter a sentence: "
.LC1:
.string "The number of words in the input string is: "
.LC2:
.string " "
main:
push rbp
mov rbp, rsp
push rbx
sub rsp, 984
mov DWORD PTR [rbp-20], 0
mov esi, OFFSET FLAT:.LC0
mov edi, OFFSET FLAT:_ZSt4cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-128]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
lea rax, [rbp-160]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
mov esi, 8
mov edi, 16
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rax, [rbp-560]
mov esi, edx
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream(std::_Ios_Openmode)
lea rax, [rbp-592]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
lea rax, [rbp-128]
mov rsi, rax
mov edi, OFFSET FLAT:_ZSt3cin
call std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
mov esi, 8
mov edi, 16
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rcx, [rbp-128]
lea rax, [rbp-992]
mov rsi, rcx
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::_Ios_Openmode)
.L17:
lea rdx, [rbp-160]
lea rax, [rbp-992]
mov rsi, rdx
mov rdi, rax
call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
mov rdx, QWORD PTR [rax]
sub rdx, 24
mov rdx, QWORD PTR [rdx]
add rax, rdx
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator void*() const
test rax, rax
setne al
test al, al
je .L16
lea rdx, [rbp-160]
lea rax, [rbp-64]
mov rsi, rdx
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
lea rax, [rbp-96]
lea rdx, [rbp-64]
mov rsi, rdx
mov rdi, rax
call flipWord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
lea rax, [rbp-96]
lea rdx, [rbp-560]
add rdx, 16
mov rsi, rax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
mov esi, 32
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
lea rax, [rbp-96]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
lea rax, [rbp-64]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
add DWORD PTR [rbp-20], 1
jmp .L17
.L16:
mov esi, OFFSET FLAT:.LC1
mov edi, OFFSET FLAT:_ZSt4cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-20]
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
mov esi, OFFSET FLAT:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))
.L19:
lea rdx, [rbp-160]
lea rax, [rbp-560]
mov rsi, rdx
mov rdi, rax
call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
mov rdx, QWORD PTR [rax]
sub rdx, 24
mov rdx, QWORD PTR [rdx]
add rax, rdx
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator void*() const
test rax, rax
setne al
test al, al
je .L18
lea rax, [rbp-160]
mov rsi, rax
mov edi, OFFSET FLAT:_ZSt4cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
mov esi, OFFSET FLAT:.LC2
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
jmp .L19
.L18:
lea rax, [rbp-992]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
lea rax, [rbp-592]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
lea rax, [rbp-560]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
lea rax, [rbp-160]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
lea rax, [rbp-128]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
mov eax, 0
jmp .L35
mov rbx, rax
lea rax, [rbp-96]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
jmp .L22
mov rbx, rax
.L22:
lea rax, [rbp-64]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
jmp .L23
mov rbx, rax
.L23:
lea rax, [rbp-992]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
jmp .L24
mov rbx, rax
.L24:
lea rax, [rbp-592]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
jmp .L25
mov rbx, rax
.L25:
lea rax, [rbp-560]
mov rdi, rax
call std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() [complete object destructor]
jmp .L26
mov rbx, rax
.L26:
lea rax, [rbp-160]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
jmp .L27
mov rbx, rax
.L27:
lea rax, [rbp-128]
mov rdi, rax
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
mov rax, rbx
mov rdi, rax
call _Unwind_Resume
.L35:
add rsp, 984
pop rbx
pop rbp
ret
__static_initialization_and_destruction_0(int, int):
push rbp
mov rbp, rsp
sub rsp, 16
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
cmp DWORD PTR [rbp-4], 1
jne .L38
cmp DWORD PTR [rbp-8], 65535
jne .L38
mov edi, OFFSET FLAT:_ZStL8__ioinit
call std::ios_base::Init::Init() [complete object constructor]
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:_ZStL8__ioinit
mov edi, OFFSET FLAT:_ZNSt8ios_base4InitD1Ev
call __cxa_atexit
.L38:
nop
leave
ret
_GLOBAL__sub_I_flipWord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >):
push rbp
mov rbp, rsp
mov esi, 65535
mov edi, 1
call __static_initialization_and_destruction_0(int, int)
pop rbp
ret
I need my c++ code converted to MASM (assembly language). The instructions below: write an assembly...
I need the following done in MASM (Assmebly or ASM) This program must use Irvine Library and the outline for the code is below (Kip irvine) Write an assembly language program to input a string from the user. Your program should do these two things: 1. count and display the number of words in the user input string. 2. Flip the case of each character from upper to lower or lower to upper. For example if the user types in: ...
Hello, I need to implement these small things in my C++ code. Thanks. 1- 10 characters student first name, 10 characters middle name, 20 characters last name, 9 characters student ID, 3 characters age, in years (3 digits) 2- Open the input file. Check for successful open. If the open failed, display an error message and return with value 1. 3- Use a pointer array to manage all the created student variables.Assume that there will not be more than 99...
Hello I need a small fix in my program. I need to display the youngest student and the average age of all of the students. It is not working Thanks. #include <iostream> #include <iomanip> #include <fstream> #include <vector> #include <algorithm> using namespace std; struct Student { string firstName; char middleName; string lastName; char collegeCode; int locCode; int seqCode; int age; }; struct sort_by_age { inline bool operator() (const Student& s1, const Student& s2) { return (s1.age < s2.age); // sort...
Hello, I have some errors in my C++ code when I try to debug it. I tried to follow the requirements stated below: Code: // Linked.h #ifndef INTLINKEDQUEUE #define INTLINKEDQUEUE #include <iostream> usingnamespace std; class IntLinkedQueue { private: struct Node { int data; Node *next; }; Node *front; // -> first item Node *rear; // -> last item Node *p; // traversal position Node *pp ; // previous position int size; // number of elements in the queue public: IntLinkedQueue();...
I need to add something to this C++ program.Additionally I want it to remove 10 words from the printing list (Ancient,Europe,Asia,America,North,South,West ,East,Arctica,Greenland) #include <iostream> #include <map> #include <string> #include <cctype> #include <fstream> #include <iomanip> using namespace std; void addWord(map<std::string,int> &words,string s); void readFile(string infile,map<std::string,int> &words); void display(map<std::string,int> words); int main() { // Declaring variables std::map<std::string,int> words; //defines an input stream for the data file ifstream dataIn; string infile; cout<<"Please enter a File Name :"; cin>>infile; readFile(infile,words);...
I need to make a few changes to this C++ program,first of all it should read the file from the computer without asking the user for the name of it.The name of the file is MichaelJordan.dat, second of all it should print ,3 highest frequencies are: 3 words that occure the most.everything else is good. #include <iostream> #include <map> #include <string> #include <cctype> #include <fstream> #include <iomanip> using namespace std; void addWord(map<std::string,int> &words,string s); void readFile(string infile,map<std::string,int> &words); void display(map<std::string,int>...
hey dear i just need help with update my code i have the hangman program i just want to draw the body of hang man when the player lose every attempt program is going to draw the body of hang man until the player lose all his/her all attempts and hangman be hanged and show in the display you can write the program in java language: this is the code bellow: import java.util.Random; import java.util.Scanner; public class Hangmann { //...
I want to change this code and need help. I want the code to not use parallel arrays, but instead use one array of struct containing the data elements, String for first name, String for last name,Array of integers for five (5) test scores, Character for grade. If you have any idea help would be great. #include #include #include #include using namespace std; const int NUMBER_OF_ROWS = 10; //number of students const int NUMBER_OF_COLUMNS = 5; //number of scores void...
c++ Write the following 2 functions and test them. Both of them need to be recursive functions. int sum(int n); // recursive version to calculate the sum of 1 + 2 + ..... + n int str_length(char s[]; // Returns length of the string s[] and the null character, '0\', is not counted in the length). Example of program execution; Enter a positive integer: 10 (user input) The sum of 1+ 2+....+10 is: 55 Enter a sentence: Hello World! (user...
may i ask for help with this c++ problem? this is the code i have for assignment 4 question 2: #include<iostream> #include<string> #include<sstream> #include<stack> using namespace std; int main() { string inputStr; stack <int> numberStack; cout<<"Enter your expression::"; getline(cin,inputStr); int len=inputStr.length(); stringstream inputStream(inputStr); string word; int val,num1,num2; while (inputStream >> word) { //cout << word << endl; if(word[0] != '+'&& word[0] != '-' && word[0] != '*') { val=stoi(word); numberStack.push(val); // cout<<"Val:"<<val<<endl; } else if(word[0]=='+') { num1=numberStack.top(); numberStack.pop(); num2=numberStack.top(); numberStack.pop();...