コンピュータで機械語が動く仕組みを絶対に理解する

  Рет қаралды 38,455

独学ヒトリ

独学ヒトリ

Күн бұрын

Пікірлер: 56
@struts6773
@struts6773 Жыл бұрын
絶対に理解してもらう動画ではなく、主が絶対に理解すると宣言しているだけの動画なので、理解できなくてもOK
@sugawarayuzuki3645
@sugawarayuzuki3645 12 күн бұрын
所々ガチで意味不明なのがありましたが分かりやすかったです!
@kawamo55
@kawamo55 Жыл бұрын
RETはリターンでこのプログラムは、CALLで呼び出されたもののはずです。 プログラムを停止させる場合はHLT(ホールト)を使います。 (アセンブラには停止しかなく終了は存在しません)
@dokugakuhitori
@dokugakuhitori Жыл бұрын
ご指摘ありがとうございます!説明が不正確だったので概要欄に追記しました。
@kata3018
@kata3018 Жыл бұрын
Z80は使い古された、とても信頼性の高いチップです。 人の命を預かる機器には良く使用されるCPUです。 Z80用リアルタイム・マルチタスクOSを作成して 原子力発電所の測定器や制御機器にも使用しました。 放射線にとても強いチップですよ。
@Drunk0904
@Drunk0904 Жыл бұрын
すごい、分かりやすく説明してくれているとおもうけど、わからない
@神谷了
@神谷了 Жыл бұрын
Z80 懐かしいですね、40数年前学生時代にボードコンピュータを組み立てながら講座で仕様書を読みました。6800系とアドレッシングがかなり違いRISC的でレジスタは多いけど判りやすいと思います。6502 が仕事でも使い慣れると命令もレジスタも少ないですが使い易いと思います。昔はBASIC が遅かったのでゲーム等は機械語で PEEK 命令でメモリーに書き込んで使い、誰でもパソコンを使っている人はアセンブラも知っていて Z80系と6800系でどっちが良いとか言っていました。6800系が 究極の 68系 6809 とか言っていたら8086という 16bit が出て、途轍もなく使い難い CPU なので誰もアセンブラを書かなくなったと思います。 今は機械語を知っている人が居ない事に驚きます。
@vocaloiddownloader6461
@vocaloiddownloader6461 Жыл бұрын
アセンブラ…何十年ぶりに聞いた言葉…その昔仕事で簡単な動作確認するために機械語直接打ち込んでテストしてた…そういうことが可能な業務用マシンが存在してた時代だった
@SKYLINE4R35
@SKYLINE4R35 Жыл бұрын
ASCII記事と同じにしたくなかったからだろうけど、Bレジにリテラル値を入れるなら「LD B,n」があるのでAレジを経由する必要はない。記事ではメモリから値を取ってくるので Aレジを経由しないといけないということなのです。 (おまけ:(今更Z80に詳しくなる必要はありませんが、他のアセンブラでも類似なことあるよという一例)Aレジにゼロを入れる場合、「LD A,ゼロ」ではなくて「XOR A」を使うのが定石です。前者だと2Byte命令ですが後者だと1Byte命令でメモリを節約できます。更に何クロックでこの命令を実行できるかは、前者は2クロック(以上?)、後者は1クロック(だったはず)で速度も早くなるから。) 他の動画でも挙げているような基礎のキのようなことを知っていることは後々役立つので、知ることに貪欲であってほしいと思います(通りすがりの老人より)
@kamikaze37136
@kamikaze37136 Жыл бұрын
なるほど、100%。完全に理解したわ
@big.m
@big.m Жыл бұрын
コンピュータの勉強をするなら「Z80」が分かり易いと当時、言われてたね。 素人なので分からないんだけど、「2+3」のアセンブリの2行目と3行目が分からない。 (1行目)Aに2を入れた後、(2行目)BにA(2)をコピーして、(3行目)Aに3を入れて (4行目)AとBを足して(5行目)結果を保存する。って事だけど、 2度手間に感じるので、(2行目)Bに3を入れて3行目は削除。では、ダメなのだろうか?
@toisaa
@toisaa 10 ай бұрын
OKです。 Aレジスタを2や3という値の入り口にしたいという、うp主の感覚から来た手順なのだと思います。
@室井修-k1r
@室井修-k1r 9 ай бұрын
BASICやCから勉強すると、文系的な表面的理解しかできないんだよな。ポインタとか、constと変数の違いが理解しずらいし。アセンブラなら、コンピュータの仕組みを理解しなきゃ動かないから、勉強するにはZ80のコンピュータでアセンブラで勉強するのがてっとりばやい。航空機でいうとセスナ機みたいなもんだね。
@でんきやさん-w2h
@でんきやさん-w2h 3 жыл бұрын
いつも拝見させて頂いております! とても分かりやすく目から鱗状態です 感謝です🥲
@dokugakuhitori
@dokugakuhitori 3 жыл бұрын
ありがとうございます!めっちゃ嬉しいです!
@dm_99
@dm_99 3 жыл бұрын
ファンです🥺応援してます🥺
@dokugakuhitori
@dokugakuhitori 3 жыл бұрын
ありがとうございます!今後も動画出します!
@TauroTauro-p5x
@TauroTauro-p5x Жыл бұрын
昭和の末ごろ、理系の学生が強制的に買わされたPC-1280にはBASICが入っていて、プログラミングに夢中になった。BASICはとにかく遅いのでマシン語を呼び出そうと見様見真似でPOKE命令を走らせてみたらCPUが焼き付いて壊れた。本当にジュッという音がした。 1280を買い直したけど、それ以後怖くてマシン語には近寄らなかった。 平成初年に入社したソフトハウスの先輩が、上司が誤消去したデータを復元するときにマシン語を使っていた。それがマシン語の実用を見た最後だった。
@fujiwara_shino
@fujiwara_shino Жыл бұрын
懐かしい。 Z80系で、ニーモニックを独学で勉強したなぁ。 BASICだと、エラーがあったら止まるけど、マシン語は暴走して帰ってこなくなるから怖かった。
@八岐けい丞
@八岐けい丞 Жыл бұрын
きっとすごくわかりやすく説明していただいてるのだろうけどさっぱりわからん俺はにわかプログラマー
@cql00067
@cql00067 4 ай бұрын
昔はこのオペコードを覚えていて、ハンドアセンブルしていました。
@FREEHAND0001
@FREEHAND0001 Жыл бұрын
自分でもプログラムコードを書くことがあるのですが、例えばある関数を使った時に、その通りに実行してくれるのはなぜなのか、とか疑問に思います。
@DAHLIA1_
@DAHLIA1_ 2 жыл бұрын
プログラミング言語→アセンブリ言語→機械語に変換するシステムはどうやって作ったんだろう。 そもそも機械語やコンピュータの動作システム自体はどうやって出来たんだろう。
@dokugakuhitori
@dokugakuhitori 2 жыл бұрын
ありがとうございます!これは自分も気になってました。調べるか。。。
@DAHLIA1_
@DAHLIA1_ 2 жыл бұрын
@@dokugakuhitori 考え出したら沼なんですよねえ
@Terra--kd2gg
@Terra--kd2gg 2 жыл бұрын
最初は全てハンドアセンブルでしょうね!。
@正一-f1h
@正一-f1h 2 жыл бұрын
BASIC→インタープリタはどうやって作ったか、 C言語→コンパイラどうやって作ったか、 と2つのコースに分かれますね。
@TheFever105
@TheFever105 3 жыл бұрын
素晴らしいです!!!!
@dokugakuhitori
@dokugakuhitori 3 жыл бұрын
ありがとうございます!
@駒罵良明
@駒罵良明 Жыл бұрын
ザイログ Z-80 懐かしい〜
@toisaa
@toisaa 10 ай бұрын
喉から手が出る程アセンブラが欲しかったある日、雑誌Oh!MZを見つけ、1年分のバックナンバーを取り寄せました。 ダンプリストを打ち込み、OSとアセンブラを手に入れた私は以降、幸いにしてハンドアセンブルをする必要が無くなりました。 何も見ずにハンドアセンブルをする猛者はたまに居ますが、私は自らその特異能力の会得を放棄しました。 動画中のコードでは、3E、32、C9辺りは思い出せましたが、他はダメダメです。
@userhide88072
@userhide88072 5 ай бұрын
四十年ぐらい前に僕も本を読みながら勉強しましたけどよくわかりませんでしたね。
@Nis-vl6xg
@Nis-vl6xg Жыл бұрын
ザイログのZ80は結構強かった気がするけど16ビットCPUの時代になってから続かなかったイメージ 研究室で太平洋工業のマイコンセットを使ったけど確かあれのCPUがZ80だったと記憶してる。
@cigea
@cigea Жыл бұрын
30年近く昔、大学でFPGAでAND回路とかOR回路とか使ってちょー簡単なCPUを作る授業があったなの(* ॑꒳ ॑* )⋆* 個人的にはそのあたりも知ってたほうが理解が深まると思うなの(* ॑꒳ ॑* )⋆*
@サトシ-u4o
@サトシ-u4o Жыл бұрын
4:21 ニーモニック⇄機械語変換一覧表を覗いて見たのですが、LD (nn) ,x; → 32nnと記載されていました。 アドレスをひっくり返すというルールはどちらに記載されているのでしょうか?
@dokugakuhitori
@dokugakuhitori Жыл бұрын
確かにそうですね... 自分が見たときと変わったのかな... 違うソースを見つけました。 www.nuis.ac.jp/~kawahara/lec/sys/z80.html
@サトシ-u4o
@サトシ-u4o Жыл бұрын
@@dokugakuhitori 変わってたんですね… わざわざすみません。ありがとうございます🙏
@ちゃんルビー
@ちゃんルビー 3 жыл бұрын
ありがとうございます
@dokugakuhitori
@dokugakuhitori 3 жыл бұрын
見ていただいてありがとうございます!
@_Love_And_Peace
@_Love_And_Peace 2 жыл бұрын
かっこいい。
@agent2122
@agent2122 Жыл бұрын
8ビットCPUは256個のDATAを処理できる 🆗 MEMORY 1個には 8ビットを書き込める 🆗 8ビットを書き込めるメモリの 数を 256x256(65536)に計算する理由は何でしょうか。 一個の家に256個の場合の数があるとしたら 家は1個でよいのでは? 家一個で場合の数は一個しかなかったら 家が256個必要なのは納得できますが 256x256はよくわかりません。 すみません、助けて下さい。 簡単にいうとCPUとメモリ数の関係ですね。
@dokugakuhitori
@dokugakuhitori Жыл бұрын
単純に仕様の問題だと理解しています。 私の個人的な解釈ですが、まず、コンピュータで扱うデータの単位はバイト単位のことが多いと思います。1バイトだと256個の住所(アドレス)しかないですが、これでは少なくて不便だから、もう1バイト足して2バイトなら65536個の住所(アドレス)を表現できるから便利と考えたのではないでしょうか。そこに明確な「理由」があるかは私にはわからないです。 ↓このサイトが少し参考になりそうです。 seiai.ed.jp/sys/text/csd/cf12/c12b110.html
@Satou-hirokI
@Satou-hirokI Жыл бұрын
俺もZ80でマシン語覚えた。
@Terra--kd2gg
@Terra--kd2gg 2 жыл бұрын
Z80のアセンブリ言語は面白いです、死ぬまで楽しめます??。
@kumasanteam1
@kumasanteam1 Жыл бұрын
((( °(ェ)°:))) あなた、めちゃんこスゴい人だな・・・
@26c62626yamashita
@26c62626yamashita Жыл бұрын
無理だけはせずに がんばってほしいです。
@bcj0465doshisha
@bcj0465doshisha 2 жыл бұрын
機械語は0と1だけなのに、なぜ今回は0と1以外も使えるのでしょうか
@dokugakuhitori
@dokugakuhitori 2 жыл бұрын
「今回」というのはどの部分ですかね? 4:46あたりの 3E 02 47…あたりの話ですかね? 3Eも02も16進数表記であって、2進数では111110となるので、使ってるのは、0と1だけです。 このサイトで試しました -> hogehoge.tk/tool/number.html では、なんで「111110」と打ち込まないのか?と思いますが、それは面倒だからだと思います。 「111110」と打ち込むより「3E」と打ち込むほうが楽ですよね。
@bcj0465doshisha
@bcj0465doshisha 2 жыл бұрын
早速にご返信有難うございます‼︎ そうです!でも、47と80も機械語〔初心者なので0と1しか使えないと思っている〕で、0以外使ってるやん。って思っています。なぜ使えるのでしょうか…?
@dokugakuhitori
@dokugakuhitori 2 жыл бұрын
@@bcj0465doshisha16進数の47は、10進数では71ですし、2進数では1000111です。なので0と1だけですよ。例えるのが難しいですが、日本語で「りんご(47)」と表そうが、英語で「Apple(71)」と表そうが、結局は赤い果物(1000111)のことを表している、っみたいなことですかね...(余計分かりづらかったらすみません)
@サトシ-u4o
@サトシ-u4o Жыл бұрын
@@bcj0465doshisha ​ 人間が解釈しやすいように変換してるだけだと思いますね。 16進数は都合の良いことに4bitの2進数を1桁で表すことが出来るので、よく利用されています。 2進数の1111(15)は16進数で言うとF(15)と表現出来ます。 桁が増えても応用出来ます。16bitの2進数1111 1111 1111 1111を16進数に変換するとき、16bitを4bit毎に区切って変換すると1111(F)1111(F)1111(F)1111(F)となるので、FFFFと表現出来ます。
@kentkentkent938
@kentkentkent938 Жыл бұрын
やっぱり無理だった
@akiperorin
@akiperorin 3 жыл бұрын
ゼッパチですね!c9
@dokugakuhitori
@dokugakuhitori 3 жыл бұрын
今回勉強して初めて知りました!これくらいなら何とか理解できました!
@けもなー-s9p
@けもなー-s9p 3 жыл бұрын
8ビット全盛期の話でしょ。
@CountGray
@CountGray Жыл бұрын
Z80 は、一般には『ぜっとはちまる』と言います。 Aレジスタはありません。 アキュムレーターと言います。 RET は、サブルーチンの終了で、プログラムの終了でがありません。 8052は、ワード、つまり2バイトです。 Z80 は、1バイト、つまり 8 bit CPU なので、一回で扱えるデータは1バイトなので、52が下位バイト(下位アドレス)、80が上位バイト(上位アドレス)なのでひっくり返るように見えるだけです。 コンパイラーだけでは、実際には実行ファイルは創られません。 リンカーが必要です。
コンピュータはなぜ動くのか、2時間で原理を理解する【半導体1】#20
32:52
ゆるコンピュータ科学ラジオ
Рет қаралды 311 М.
Osman Kalyoncu Sonu Üzücü Saddest Videos Dream Engine 269 #shorts
00:26
Friends make memories together part 2  | Trà Đặng #short #bestfriend #bff #tiktok
00:18
Não sabe esconder Comida
00:20
DUDU e CAROL
Рет қаралды 54 МЛН
【ゆっくり解説】へんなプログラミング言語3選
8:02
小学生でもわかる!!DNSってなに?
7:57
小学生でもわかる!! IT知識学習チャンネル
Рет қаралды 2,4 М.
パケットの中身を見てTCP/IPを絶対に理解したい
6:30
独学ヒトリ
Рет қаралды 16 М.
【ITエンジニアへの道 01話】マシン語に挑戦!【中学生編2/9】
11:24
プログラマーずんだもん
Рет қаралды 6 М.
10分でみる コンピュータの歴史
10:46
歴史 Animation Channel
Рет қаралды 348 М.
C言語を超かんたんに解説【例えで直感的に理解可能】
16:17
なかしーの電子工作部
Рет қаралды 277 М.
コンピュータメモリー(RAM)の仕組み
23:32
仕組みチャンネル
Рет қаралды 909 М.