JoeTheProfessor
JoeTheProfessor
  • 5
  • 401 954
05: Basic Arithmetic Operations
A look at addition, subtraction, multiplication and division in ARM Cortex-M assembly language.
Переглядів: 51 700

Відео

04 Bit-banging in Cortex-M Assembly04 Bit-banging in Cortex-M Assembly
04 Bit-banging in Cortex-M Assembly
Переглядів 37 тис.9 років тому
This video describes the assembly instructions used to set, clear, and toggle individual bits. The equivalent statements in C are also provided for comparison.
02: ARM Cortex-M Move Instructions02: ARM Cortex-M Move Instructions
02: ARM Cortex-M Move Instructions
Переглядів 63 тис.9 років тому
This video presents the general format of the ARM assembly language instructions and describes the simple MOV instruction, MOVT, and MOVW. In particular, we look at the immediate addressing mode as used with these instructions.
01: ARM Cortex-M Instruction Set Architecture01: ARM Cortex-M Instruction Set Architecture
01: ARM Cortex-M Instruction Set Architecture
Переглядів 148 тис.9 років тому
This video presents the basics of the Cortex-M architecture from the programmer's point of view, including the registers and the memory map.
03: ARM Cortex-M Load/Store Instructions03: ARM Cortex-M Load/Store Instructions
03: ARM Cortex-M Load/Store Instructions
Переглядів 103 тис.9 років тому
Introduces the Load and Store instructions for the ARM Cortex-M microcontrollers, as well as the special case of the "literal" addressing mode.

КОМЕНТАРІ

  • @唐要离
    @唐要离 Місяць тому

    Why the address increases by 4? Does it means every memory segment have 4 bytes(8bit hexadecimal number or 32bit binary number) of data? So is the address means how many bytes?

  • @FlorinPopa-mt8kx
    @FlorinPopa-mt8kx 5 місяців тому

    0x11 in binary is 0b10001, and not 11 as you had it in your video

  • @yuruyenucakc2036
    @yuruyenucakc2036 9 місяців тому

    "If the result is pure nonsense, then it's the programmers fault." -JoeTheProfessor

  • @baglayan
    @baglayan 11 місяців тому

    Thank you for this series, professor!

  • @AlessioSangalli
    @AlessioSangalli Рік тому

    Press F to pay respects to this wonderful mini-series, that is unfortunately defunct. I wish it would continue to comparisons, jumps, subroutines, interrupts, debug controller.......... The teaching style of Prof. Joe is so concise, clear, eloquent

  • @riio15
    @riio15 Рік тому

    thank you lots, u should upload more videos~

  • @vikramchary9778
    @vikramchary9778 2 роки тому

    Please do more videos Sir i have enjoyed and learned every video you teach so please do more on arm and other embedded systems .......

  • @XpIOHdeJIb3000
    @XpIOHdeJIb3000 2 роки тому

    no mention of LDRB and LDRH

  • @arianemegnie4098
    @arianemegnie4098 2 роки тому

    Bonjour vos videos ont l'air très interessantes mais je comprends pas vraiment le fond des explications parceque c'est en anglais 😔

  • @ashwin372
    @ashwin372 2 роки тому

    Why stopped the tutorials? only 5 . what happened to the professor?

  • @ashwin372
    @ashwin372 2 роки тому

    high quality teaching!

  • @davidholmes2157
    @davidholmes2157 2 роки тому

    thanks a lot Joe

    • @svikash6464
      @svikash6464 2 роки тому

      what is difference between memory and address...??

  • @Fihaa111
    @Fihaa111 2 роки тому

    in the beginning of the video you said RO zill contain the 32 bits of the Immediate value but why 32 bits !!

  • @alech3630
    @alech3630 2 роки тому

    Help me please! How to include another asm file to the project? Keil generate mistake when I try to include with directive GET, as show in manual

  • @chegleeff
    @chegleeff 2 роки тому

    Very interesting! Your voice sounds like the voice of Steve Jobs.

  • @atpTUBE
    @atpTUBE 2 роки тому

    Adamsın Jo dayı!

  • @sushirene4
    @sushirene4 2 роки тому

    where are the rest?????

  • @rtg1itch
    @rtg1itch 2 роки тому

    thank you.

  • @dramaqueen9475
    @dramaqueen9475 2 роки тому

    great video sir

  • @astridandaraleifsen1912
    @astridandaraleifsen1912 3 роки тому

    Sir, I wish that you could please make more videos. I am learning so much from you! Thank you sooo much!!

  • @mikroelektro
    @mikroelektro 3 роки тому

    Why did you stop? I think you have the best content for assembly programming in ARM. At least make a what next vedio to show the way to continue

  • @김경민-n7r5f
    @김경민-n7r5f 3 роки тому

    Thank you for your video, it is very helpul

  • @ucmasmaster1399
    @ucmasmaster1399 3 роки тому

    Tnx

  • @ucmasmaster1399
    @ucmasmaster1399 3 роки тому

    Tnx

  • @muniswamy100
    @muniswamy100 3 роки тому

    very rich illustration. Thanx indeed.

  • @cagataycetinkol7730
    @cagataycetinkol7730 3 роки тому

    It hepls much, thank you

  • @diegeeleel
    @diegeeleel 3 роки тому

    I’m guessing that your videos are about to get a whole lot more popular.

  • @alidacriatian7834
    @alidacriatian7834 3 роки тому

    Fuck yeah, amazing tutorial

  • @angelaasatryan2183
    @angelaasatryan2183 3 роки тому

    )))

  • @fatihe.1338
    @fatihe.1338 3 роки тому

    Doesnt cortex m4 use harvard architecture?

  • @caleb7799
    @caleb7799 3 роки тому

    horrible mic!

  • @johanneswestman935
    @johanneswestman935 3 роки тому

    The fact that this level of content is available for free on the internet is astonishing.

  • @alex2gokenzingen
    @alex2gokenzingen 3 роки тому

    Great series, where is it continued?

  • @alex2gokenzingen
    @alex2gokenzingen 3 роки тому

    Thank you for this good presentation!

  • @alex2gokenzingen
    @alex2gokenzingen 3 роки тому

    Brilliant!

  • @10carlosavila
    @10carlosavila 3 роки тому

    Hello Professor Joe! I am a Latino who does not speak English and I would like to have the option to translate English into Spanish. Your videos do not have the option to make that option to change from English to Spanish. I would appreciate. Charles Panama

  • @mvisperas
    @mvisperas 3 роки тому

    Due to pipelining, the PC should be pointing on the next line in the drawing...at least that's how it is on ARM9. I believe it's the same on the Cortex. Can easily be proved by checking the listing and see what offset the assembler puts.

  • @Antyelektronika
    @Antyelektronika 3 роки тому

    Hi Mr. Joe in munute 3:30 in register R4 is value 0x0000ABDD, it should not be value 0x0000ACDD? Thank you for this video.

    • @joetheprofessor6260
      @joetheprofessor6260 3 роки тому

      No. If we perform the bitwise OR of 0x1 (from R0) and 0xB (from R3) the result will be 0xB.

    • @Antyelektronika
      @Antyelektronika 3 роки тому

      @@joetheprofessor6260 thank you for you answer, but if we perform the bitwise OR of 0x1(R0) and 0xC (R3) the result is 0xD and from what you have wrote earlier I thnik that should be 0xC. Thank you for answers for understanding this.

    • @joetheprofessor6260
      @joetheprofessor6260 3 роки тому

      @@Antyelektronika 0x1 is 0b0001 and 0xC is 0b1100. If we OR them together we get 0b1101 which is 0xD

  • @thanhtruong4958
    @thanhtruong4958 4 роки тому

    Great lecture Processor Joe. I hope you find some time to finish the serie.

  • @sandlertossone1813
    @sandlertossone1813 4 роки тому

    at 3:28, why didn't the B change by one in R3?

    • @joetheprofessor6260
      @joetheprofessor6260 4 роки тому

      Because the OR of 0xB and 0x1 is 0xB....that's why we have the B in R4. R3 doesn't change because it is not a destination register for any of the instructions.

  • @jasonhunter5790
    @jasonhunter5790 4 роки тому

    You are the hero we needed <3 there is hope for my class now!

  • @piglink10
    @piglink10 4 роки тому

    So does it mean for let's say r0 which contains 0x00000011, 0x00000011 can be either a memory or an address?

    • @mvisperas
      @mvisperas 3 роки тому

      It can be a data or an address or an offset to an address depending on how it is used: Used as a data: ADDS R1, R0 Used as an address (1st parameter inside the bracket,). In this case, it is a pointer (just like the pointer in C. LDR R1, [R0] Used as an offset (2nd parameter inside the bracket): LDR R1, [R2, R0]

  • @datuprince4634
    @datuprince4634 4 роки тому

    I need a code for this please. Ask two scores from the user, specifically, the raw score as the first score and the total score as the second score. Store the digits in the EAX and EBX register, respectively, given the formula raw score divided by the total score times 50 and plus 50. Store the result in a memory location 'res' and finally display the result. -NASM

  • @reyfrancisfamulagan3271
    @reyfrancisfamulagan3271 4 роки тому

    Thanks professor. I thought this is called bit manipulations in 8-bit architecture.

  • @Ureallydontknow
    @Ureallydontknow 4 роки тому

    perfect explanation. most of the videos online show comparisons of all the different arm architectures. your video shows only M4 which is what I need.

  • @idcemail123
    @idcemail123 4 роки тому

    This helped a lot for my assembly language class thank you.

  • @AlbertoRivas13
    @AlbertoRivas13 4 роки тому

    thanks a lot man

  • @FadeStrategy
    @FadeStrategy 4 роки тому

    This might just save my grade

  • @Tapajara
    @Tapajara 4 роки тому

    What I was hoping for was to see you explain the binary encodings for these instructions.

  • @Tapajara
    @Tapajara 4 роки тому

    I've heard and used the term "bit-banging" many many times. Nothing new to me. What I haven't heard of is the vertical bar '|' (or just "bar") being called a "pipe". Never heard of that before.

    • @joetheprofessor6260
      @joetheprofessor6260 4 роки тому

      In a unix shell the vertical bar is used to take the output from one command and "pipe" it to the input of another command.

    • @Tapajara
      @Tapajara 4 роки тому

      @@joetheprofessor6260 I am very familiar with pipes in command language interpreters. Within the narrow context you describe, the "pipe operator" is represented by the ASCII unbroken vertical bar character (there is a broken vertical bar' ¦' character and that one is not in ASCII). But the character is not a "pipe character" just as an asterisk is not a "multiply character". In fact, Unicode clarifies that '*' is an asterisk and is intended to be used for a footnote indicator which was its traditional purpose before programmers hijacked it for other uses. Unicode defines the '×' to be the multiply character (or more strictly its Code Point). In the C language, the asterisk is used as the "multiply operator" but it is wrong to call it the "multiply character". The character is still called an asterisk. As in the C language, the unbroken vertical bar is the inclusive OR operator. Applying jargon that comes from unspecified and/or unrelated contexts should be avoided. It only causes confusion.