2007-11-01から1ヶ月間の記事一覧

即値によるアドレス指定

『高級言語プログラマのためのアセンブラ入門』 83ページセグメントがらみを試してみる CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax mov ah,02H mov dl,DATA:[0] int 21H mov ah,4CH int 21H CODE ENDS DATA SEGMENT MSG DB "…

アドレッシング

『高級言語プログラマのためのアセンブラ入門』 79〜83ページあたり一部を試してみる CODE SEGMENT ASSUME cs:CODE,ds:DATA,ss:STK START: mov ax,DATA mov ds,ax mov ah,02H mov dl,MSG[1] int 21H mov ah,02H mov di,1 mov dl,MSG[di] int 21H mov ah,02H …

レジスタアドレッシング

『高級言語プログラマのためのアセンブラ入門』 79ページ mov bx, [ax] mov ax, [cx]あたりがエラーになるらしい。 ベースレジスタやインデックスレジスタでないとレジスタ間接指定できないらしい。 へー、そういうもんなんだ。

セグメント名

『高級言語プログラマのためのアセンブラ入門』 69ページのセグメント名について これまでは「CDSEG」「DTSEG」「STSEG」を使用してきた 普通は慣例的に「CODE」「DATA」「STACK」が使用される これからは「CODE」「DATA」「STK」を使用する とのこと。 (「S…

ES レジスタによるセグメント指定

『高級言語プログラマのためのアセンブラ入門』 68ページの as_eseg.asm をコンパイル、実行。 ABAES レジスタの本来の用途はこんなことなのだろうか???

セグメントのグループ化

『高級言語プログラマのためのアセンブラ入門』 66ページの as_group.asm をコンパイル、実行。 ABAセグメントのグループ化の意図・意義が良く分からない。そんなに論理的に分けたいのか? 別々に作ったものを混ぜるためなのか?

複数のデータセグメントの切り替え

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

「OFFSET ds:MSG」か?「ds:OFFSET MSG」か?

ふと疑問に思ったので、確認 CDSEG SEGMENT ASSUME cs:CDSEG,ds:DTSEG,ss:STSEG START: mov ax,DTSEG mov ds,ax mov ah,09H ;mov dx,OFFSET MSG mov dx,OFFSET ds:MSG int 21H mov ah,4CH int 21H CDSEG ENDS DTSEG SEGMENT MSG DB "Hello World$" DTSEG END…

オペランドでのオフセット指定

『高級言語プログラマのためのアセンブラ入門』 62ページの説明の確認+α。 CDSEG SEGMENT ASSUME cs:CDSEG,ds:DTSEG,ss:STSEG START: mov ax,DTSEG mov ds,ax ;mov ah,09H ;mov dx,OFFSET MSG mov ah,02H mov dl,MSG int 21H mov ah,4CH int 21H CDSEG ENDS…

改行を含まない文字列

『高級言語プログラマのためのアセンブラ入門』 62ページのコードを見ていて気がついた。 CDSEG SEGMENT ASSUME cs:CDSEG,ds:DTSEG,ss:STSEG START: mov ax,DTSEG mov ds,ax mov ah,09H mov dx,OFFSET MSG int 21H mov ah,4CH int 21H CDSEG ENDS DTSEG SEGM…

2007-11-17 の失敗のリベンジ?

2007-11-17 id:noritsugu:20071117:MASM のデフォルトセグメントレジスタの動作確認 失敗のリベンジ?『高級言語プログラマのためのアセンブラ入門』 58ページの記述に近づけて。 CDSEG SEGMENT ASSUME cs:CDSEG,ds:DTSEG,ss:STSEG START: mov ax,DTSEG mov …

2007-11-17 の失敗のリベンジ?

2007-11-17 id:noritsugu:20071117:MASM のデフォルトセグメントレジスタの動作確認 失敗のリベンジ? CDSEG SEGMENT ASSUME cs:CDSEG,ds:DTSEG,ss:STSEG START: ASSUME ds:CDSEG mov ax,CDSEG mov ds,ax mov ah,09H mov dx,OFFSET MSG1 int 21H mov ax,DTSE…

ASSUME ds:コードセグメント

「ASSUME ds:コードセグメント」と変更してみる。 『高級言語プログラマのためのアセンブラ入門』 43ページの as_exe.asm 改をコンパイル、実行 CDSEG SEGMENT ASSUME cs:CDSEG,ds:CDSEG,ss:STSEG START: mov ax,CDSEG mov ds,ax mov ah,09H mov dx,OFFSET M…

デフォルトセグメントレジスタの動作確認

『高級言語プログラマのためのアセンブラ入門』 58ページに記述されている デフォルトセグメントレジスタの確認(本のコードとは全然違う) 『高級言語プログラマのためのアセンブラ入門』 43ページの as_exe.asm 改をコンパイル、実行 CDSEG SEGMENT ASSUME c…

ds を削除

『高級言語プログラマのためのアセンブラ入門』 43ページの as_exe.asm から データセグメントを削除してみた。 MSG をコードセグメントに移動 「ds:DTSEG」を削除 「mov ax,DTSEG」を「mov ax,CDSEG」に変更 「DTSEG SEGMENT 〜 DTSEG ENDS」を削除 コンパ…

データを先頭に記述

『高級言語プログラマのためのアセンブラ入門』 54ページの COM 形式でデータを先頭行側に配置した例をコンパイル、実行。 COM 形式では MSG のところをスキップするよう配慮が必要。 でも、配慮せず MSG 行がコードに混じっていたらどう解釈されるんだ? 『…

簡易化セグメント定義

『高級言語プログラマのためのアセンブラ入門』 51ページの 簡易化セグメント定義 as_easy.asm をコンパイル、実行。 .MODEL SMALL .CODE .DATA がミソのようだ。単なるマクロのようなものなのか???

as_com.asm

『高級言語プログラマのためのアセンブラ入門』 48ページの as_com.asm は、 36ページの as_first.asm とほぼ同じ。as_com.asm にはコメントがあるのと、as_first.asm の ASSUME cs:CODE,ds:CODE が、as_com.asm では ASSUME cs:CDSEG,ds:CDSEG,ss:CDSEG と…

EXEファイルの生成

『高級言語プログラマのためのアセンブラ入門』 43ページの as_exe.asm をコンパイル、実行 C:\tmp\everyday\MASM>ml as_exe.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assemblin…

COMファイルの生成

『高級言語プログラマのためのアセンブラ入門』(ソフトバンク クリエイティブ) 『はじめて読むMASM―ソフトウェア環境のからくりを学ぶ』(アスキー) 『はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)』(アスキー) 『x86アセンブ…

MASM32のインストール

m32v9r.zip http://www.masm32.com/ から LNK563.EXE ftp://ftp.microsoft.com/softlib/MSLFILES/ から m32v9r.zip を展開し、install.exe を実行 LNK563.EXE は圧縮ファイルだった