MASM

ディレクティブ EXTERN

『高級言語プログラマのためのアセンブラ入門』 187ページあたり EXTERN MSG:BYTE CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov ah,09H mov dx,OFFSET MSG int 21H ;--------…

ディレクティブ EXTERN

『高級言語プログラマのためのアセンブラ入門』 187ページあたり EXTERN PUT_AX:NEAR EXTERN NUM1:WORD CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov ax,NUM1 call PUT_AX ;-…

ディレクティブ RECORD MASK WIDTH

『高級言語プログラマのためのアセンブラ入門』 191ページあたり TEST1 RECORD F1:4,F2:5,F3:7 EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov ax,03FFFH a…

ディレクティブ .RADIX

『高級言語プログラマのためのアセンブラ入門』 190ページあたり .RADIX 16 CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,9 mov dx,OFFSET MSG int 21 mov ah,4C int 21 MSG DB "Hello World",0DH,0AH,'$' CDSEG ENDS END START

ディレクティブ LABEL

『高級言語プログラマのためのアセンブラ入門』 189ページあたり CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,BYTEDT mov dx,OFFSET MSG int 21H ; mov ax,NEWDT ; mov ax,MYDT mov ah,BYTEDT[1] int 21H MSG DB "Hello World"…

ディレクティブ INCLUDE

『高級言語プログラマのためのアセンブラ入門』 188ページあたり CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,09H mov dx,OFFSET MSG int 21H INCLUDE 2008020801_INCLUDE.asm 2008020801_INCLUDE.asm mov ah,4CH int 21H MSG …

ディレクティブ TEXTEQU

『高級言語プログラマのためのアセンブラ入門』 187ページあたり 数値も文字列も使える EQU 数値だけ使える = 文字列だけ使える TEXTEQU ということらしい。 あって嬉しいのか?単なる対象性のためだけ?と思ったが、どうやら私のイメージしたものとは違うよ…

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたり「,」が入ろうと、スペースが入ろうと大丈夫なようだ F09 EQU ah, 09H F4C EQU ah,4CH CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov F09 mov dx,OFFSET MSG int 21H …

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたり「$」も識別子に使えるらしい CRLF$ EQU 0DH,0AH,'$' CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,09H mov dx,OFFSET MSG int 21H mov ah,4CH int 21H MSG DB "H…

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたり「&」で連結できるらしい。 CHAR_M EQU M CHAR_E EQU E CHAR_S EQU S MES EQU CHAR_M&CHAR_E&CHAR_S ECHO MES CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,09H m…

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたりEQU は、テキストマクロとしても使えるらしい。 ORG_ADR EQU 100H MES EQU "Hello World" REG_AH EQU ah CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG ORG_ADR START: mov REG_AH,09H…

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたり ;ORG_ADR EQU 100H MES EQU "Hello World" ORG_ADR = 100H ;MES = "Hello World" CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG ORG_ADR START: mov ah,09H mov dx,OFFSET MSG int 21…

ディレクティブ EQU と =

『高級言語プログラマのためのアセンブラ入門』 186ページあたり ORG_ADR EQU 100H MES EQU "Hello World" CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG ORG_ADR START: mov ah,09H mov dx,OFFSET MSG int 21H mov ah,4CH int 21H MSG DB MES,0DH,0…

ディレクティブ DUP

『高級言語プログラマのためのアセンブラ入門』 185ページあたり「DUP(値)」と「DUP(?)」の違いを確認。 CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから ;-----------------------codeここ…

ディレクティブ DUP

『高級言語プログラマのためのアセンブラ入門』 185ページあたり CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG ORG 100H START: mov ah,09H mov dx,OFFSET MSG int 21H mov ah,4CH int 21H MSG DB 'G',10 DUP(6FH),"gle",0DH,0AH,'$' CDSEG ENDS END ST…

ディレクティブ SBYTE, SWORD, SDWORD, REAL4, REAL8, REAL10

『高級言語プログラマのためのアセンブラ入門』 185ページあたり CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov al,127 call LCMP mov al,DB_M128 ; -128 call LCMP mov al,DB_M129 ;…

ディレクティブ BYTE, WORD, DWORD, FWORD, QWORD, TBYTE

『高級言語プログラマのためのアセンブラ入門』 184ページあたり「DB, DW, DD, DF, DQ, DT」の別名としても使える。 なんで必要なんだろうね?と思ったら、PTR 演算子の型指定に使えるというのがミソらしい。

ディレクティブ DB, DW, DD, DF, DQ, DT

『高級言語プログラマのためのアセンブラ入門』 183ページあたりas_com.asm 改で DB のところを DW で書けるかやってみた。「H」が「0x48」、「e」が「0x65」、「l」が「0x6c」といった感じなので、 上下バイトを逆に書く必要があった。 CDSEG SEGMENT ASSUM…

ディレクティブ COMMENT

『高級言語プログラマのためのアセンブラ入門』 183ページあたり複数行コメント。 「COMMENT」「区切り文字」「コメント本体」「区切り文字」らしい。 COMMENT $ hoge hoge $ COMMENT . hoge hoge . COMMENT ( hoge hoge ( なんてのが書けた。

ディレクティブ .MODEL

『高級言語プログラマのためのアセンブラ入門』 182ページあたり50ページあたりの EXE 形式の簡易化セグメント方式の記述を参考に、 as_com.asm 改で COM 形式で TINY モデルを使ってみる。 ;CDSEG SEGMENT ; ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG .MODEL TINY…

ディレクティブ ORG 100H

ファイルまわりのファンクションコールは後回しにし、先に進む。 『高級言語プログラマのためのアセンブラ入門』 180ページ以降の第7章のディレクティブ(擬似命令)as_com.asm 改で「ORG 100H」をコメントアウトしてみる。 CDSEG SEGMENT ASSUME cs:CDSEG,ds:…

ファンクションコール 0AH

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 0AH は、「コンソールからの文字列入力」 EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;--------------------…

ファンクションコール 09H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 09H は、「ディスプレイへの文字列の出力」 CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov ah,0…

ファンクションコール 08H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 08H は、「キーボードから1文字入力」 ファンクションコール 01H とはエコーがないのが違う。 EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK S…

ファンクションコール 07H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 07H は、「コンソールから直接入力」 ファンクションコール 01H とはエコーがないのが違う。 「キーボードから」と「コンソールから」というのも違う。これは、リダイレ…

ファンクションコール 06H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 06H は、「コンソールとの直接入出力」 まず入力の確認用コード(dl に FF を設定) EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov a…

ファンクションコール 02H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 02H は、「ディスプレイへの1文字出力」 CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov dl,'A' …

ファンクションコール 01H

『高級言語プログラマのためのアセンブラ入門』 171ページあたりファンクションコール 01H は、「キーボードから1文字入力」 EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------…

XCHG 命令

『高級言語プログラマのためのアセンブラ入門』 160ページ EXTERN PUT_AX:NEAR CODE SEGMENT PUBLIC ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax ;-----------------------codeここから mov ax,0A5A5H mov bx,05A5AH xchg ax,bx call PUT_A…

SUB, SBB 命令

『高級言語プログラマのためのアセンブラ入門』 157ページの tst_sub.asm をコンパイル、実行。 0FF4 FFFF