2015-10-01から1ヶ月間の記事一覧

電卓のコンピュータの違い

コンピュータは、電卓の入力に当たる動作を、プログラムに従って自動で行う機器。 電卓は、命令コードをユーザがリアルタイムで入力して、その命令コードを手動で実行していく機器。 と考えている。 例えば、3+2という計算はコンピュータにさせる場合はプロ…

電卓はマイコン制御の機器では無いが?

電卓は普通は、マイコン制御ではなくワイヤードロジックによる制御によって動作する。 しかし私は、電卓もコンピュータの一種と考えている。 マイコンをシングルチップ型からマルチチップ型に変えて、余分な機能を排除したものと考えている。 電卓は電子計算…

2バイト以上の型の配列のコンパイル

unsigned short型(2バイト)やunsigned int型(4バイト)といった型の配列のコンパイルはどうやってやるのか。 http://blogs.yahoo.co.jp/hito35687/39541481.htmlでは、1バイトの型の場合のコンパイルの仕方について語った。 複数バイトの型の場合は、添字の値…

配列のコンパイル

PIC16F84AのC言語ソースファイルにおいて、配列はどうやってコンパイルされているのか。 FSRレジスタ内の値のアドレスのレジスタに変身する、INDFレジスタ。 それを利用してコンパイルされているのではないだろうか。 例えば以下のC言語ソース。 unsigned ch…

可変レジスタ・INDF

PIC16F84AというマイコンにおけるINDFレジスタは、他のレジスタに変身できる可変レジスタである。 どのレジスタに変身するかは、FSRレジスタに格納されているアドレスによって異なる。 そう、INDFレジスタは、FSRレジスタに格納されているアドレスのレジスタ…

コマンドライン引数

C言語における引数とは、関数において、その関数の呼び出し元の関数から渡される数値のことである。 コマンドライン引数とは、main関数の引数である。 main関数は初めに実行される関数なのに、main関数の呼び出し元の関数があるというのか。 int main(int ar…

レジスタ内のビットを任意の回数だけシフトする命令を、PIC16F84Aの命令として作ってみた

ワイヤードロジック制御方式ではなくマイクロプログラム制御方式の命令として作ってみた。 左シフト系 rlflw:w内の値を即値データの数値の分左シフトする命令。 rlfwf:w内の値を任意のファイル内の数値の分左シフトする命令。 それらは以下のマイクロプロ…

同期式シフトレジスタを設計してみた。

初期状態:001 パルス1発目:010 パルス2発目:100 パルス3発目以降:000

データの圧縮の原理について

データの圧縮とは、データの容量(サイズ)を小さくすることである。 どの様にして小さくしているのか。 例えば、3ビットのレジスタがあるとする。 そのレジスタ内のデジタルデータは以下の8つの内のどちらかになり得るはずだ。 000 001 010 011 100 101 110 1…

マイコン・PIC16F84Aから理解する、コンピュータの5大機能

コンピュータの5大機能は、入力・出力・記憶・制御・演算である。 使い方が簡単でポピュラーなマイコン・PIC16F84Aのアセンブリプログラムを組んでいると、そのマイコンのハードウェア構成が理解出来てくる。 そこで、そのPIC16F84Aからコンピュータの5大機…

シリアル加算とパラレル加算

コンピュータにおける加算の方法は、シリアル加算とパラレル加算の2つが考えられる。 シリアル加算とは、アップカウンタとダウンカウンタの2つのレジスタを用い、ダウンカウンタ内の値が全て0になるまでアップカウンタ内の値を1ずつ増加させていくという加算…

http://note.chiebukuro.yahoo.co.jp/detail/n362884で紹介したOSの改良版

説明文も表示されていて、より使いやすいように改良してみた。 bits 16 org 0x100 jmp START ;------------------------------------------- ;OSエリア INPUT_A: mov ah,08h ;エコー無し入力待機命令を実行する準備 int 21h ;エコー無し入力待機命令を実行 m…

マイコン(PIC16F84A)のC言語ソースファイルのコンパイルについて 配列のコンパイル

本記事はhttp://blogs.yahoo.co.jp/hito35687/39511057.htmlの続きと思っていい。 以下のC言語ソースファイルがあるとする。 unsigned char x; unsigned char hai[3]; x = 1; hai[x] = 5; 個々の変数は以下のレジスタに格納されるものとする。 x:0Ch hai[3]…

マイコン(PIC16F84A)のC言語ソースファイルのコンパイルについて

unsigned char x; unsigned short int i; unsigned char hai[3]; TRISA = 0x01; TRISB = 0x00; PORTA = 0x00; PORTB = 0x00; x = 0x02; i = 0x101; hai[x] = 0x03; このC言語ソースファイルをコンパイル(アセンブリ言語に変換)するとする。 変数とレジスタ …

新たな変数の型を作ろう

高級言語には、WORDやCStringといった高度な「変数の型」が登場する。 そこで、新たな変数の型を作ってみよう。構造体を利用して。 colorという変数の型を作ってみよう。 typedef struct color{ unsigned char red; unsigned char green; unsigned char blue…