• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アセンブラの問題です。(テーブル))

アセンブラのテーブルを使った1ワード内のビット数計算プログラムの分析

KOH_daの回答

  • ベストアンサー
  • KOH_da
  • ベストアンサー率31% (161/506)
回答No.2

答えは、n=0なら0bit、n=1=1bit、 2=1bit, 3=2bit, 4=1bit, 5=2bit, 6=2bit, 7=3bitですから、 maskと名付けられたテーブルに答えを用意しておいて、 それを参照するというプログラムです。 それだけだと、テーブルサイズが65536バイトになるため、 4分割してテーブルサイズを16バイトにしたのかな。 プログラムは微妙に間違っているし、 テーブルを省略してあったりするので確信はないです。

akirasuzu
質問者

お礼

ありがとうございました。この先生は間違いの多い先生なので、また例によって、間違った物と思われます。この前アセンブラのテストがあって、テーブルを使う問題が出ましたが、なんとか乗り切りました。

関連するQ&A

  • MINIXのソースはあるのでしょうか?

    MINIXの本に以下のソースの一部があり、わからないことが5つあります。 (1)#0x20の#の意味 (2)_rebootと_wrebootの意味の違い (3)_vec_tableを0:0番地に転送する意味 (4)movwの意味 (5)out 0x20などポートの意味、0x20だけでなくポートについて詳しく知りたい。 等 また、AT互換機で動く、MINIXのすべてのソースも探しています。 よろしくお願いいたします。 _reboot: cli mov ax, #0x20 out 0x20 call resvec int 0x19 _wreboot: cli mov ax, #0x20 out 0x20 call resvec xor ax,ax int 0x16 int 0x19 resvec; cld mov cx, #2*65 mov si,#_vec_table xor di, di mov es, di rep movw ret .data _vec_table: .zerow 130

  • NASM(独習アセンブラのサンプルソース)について

    独習アセンブラ初版5刷のサンプルソース(リスト6.7、102p)での疑問です 下の方にあるコメントアウトしているputc関数って何のためにあるんですか? どこからも呼び出してないのでいらないと思うのですが… アセンブラはNASMです ※本に書かれてるソースはコメントアウトしてません、コメントアウトしてもアセンブルできました bits 16 org 100h mov dx,sfile mov al,0 mov ah,3dh int 21h jc endquit mov [ifh],ax mov dx,dfile mov cx,0 mov ah,3ch int 21h jc endquit mov [ofh],ax readb: mov bx,[ifh] mov dx,buf mov cx,1 mov ah,3fh int 21h test cx,ax jz endquit jc endquit mov bx,[ofh] mov dx,buf mov cx,1 mov ah,40h int 21h jmp readb endquit: mov bx,[ifh] mov ah,3eh int 21h mov bx,[ofh] mov ah,3eh int 21h mov ax,4c00h int 21h ;putc: ; push ax ; mov ah,2h ; int 21h ; pop ax ; ret ifh dw 0 ofh dw 0 sfile db "srcfile.txt",0 dfile db "destfile.txt",0 buf resb 2 私が思うにリスト6.6(100p)のreadbラベルのところでこれを呼び出してるのでソースを流用して消し忘れてるだけなんでしょうか?

  • アセンブラについての質問です

    学校からの課題でキーボードから1文字入力し、アルファベットの大文字なら小文字に、小文字なら大文字に変換して表示するプログラムでリターンキーが押されるまで繰り返すというもので mov ah 1 int 21h sub al '0' xor al 0dh mov dl al add dl '0' mov ah 2 int 21h までやってたんですが繰り返しの所がよく分かりません 調べたんですが難しくて分かりませんでした どなたか、教えて頂けないでしょうか?出来れば、方法だけでなくソースも書いて頂けると有り難いのですが・・・ よろしくお願いします。

  • NASMアセンブリの構文でわからない、書式があります。

    いつも、お世話になっております。 小生、只今、WindowsXPSP3上でnasm0.99.6を使いアセンブリ言語を勉強しています。 今回質問させて頂き点を、ピックアップすると以下の構文です。 12行目のmov ax, word [msgBack] 16行目のmov word [es:di], ax 23行目のmov byte [es:edi], 'A' 50行目times 510 - ($ - $$) db 0 そして以下にソースコード全体を記述させて頂きます。 1[org 0] 2[bits 16] 3 jmp 0x07C0:start ; far jmpする。 4 5start: 6 mov ax, cs ; csには0x07C0が入っている 7 mov ds, ax ; dsをcsと同じくする 8 9 mov ax, 0xB800 ; ビデオメモリのセグメントを 10 mov es, ax ; esレジスタに入れる 11 mov di, 0 ; 一番上の頭の部分から書く 12 mov ax, word [msgBack] ; 書く予定のデータの住所を指定する 13 mov cx, 0x7FF ; 画面全体に書くためには 14 ; 0x7FF(10進数 2047)個のWORDが必要 15paint: 16 mov word [es:di], ax ; ビデオメモリに書く 17 add di,2 ; 1つのWORDを書いたので、2を加える 18 dec cx ; 1つのWORDを書いたので、CXの値を1つ引く 19 jnz paint ; CXが0じゃないと、paintにジャンプし、 20 ; 残りを書く 21 22 mov edi, 0 ; 一番上の頭の部分に書く 23 mov byte [es:edi], 'A' ; ビデオメモリに書く 24 inc edi ; 1つのBYTEを書いたので、1を加える 25 mov byte [es:edi], 0x06 ; 背景色を描く 26 inc edi ; 1つのBYTEを書いたので、1加える 27 mov byte [es:edi], 'B' 28 inc edi 29 mov byte [es:edi], 0x06 30 inc edi 31 mov byte [es:edi], 'C' 32 inc edi 33 mov byte [es:edi], 0x06 34 inc edi 35 mov byte [es:edi], '1' 36 inc edi 37 mov byte [es:edi], 0x06 38 inc edi 39 mov byte [es:edi], '2' 40 inc edi 41 mov byte [es:edi], 0x06 42 inc edi 43 mov byte [es:edi], '3' 44 inc edi 45 mov byte [es:edi], 0x06 46 47 jmp $ ; ここで無限ループに入る 48 49msgBack db '.', 0xE7 ; 背景に使う文字 50 51times 510-($-$$) db 0 ; ここから509番地まで0で詰める 52 dw 0xAA55 ; 510番地に0x55を、511番地に0xAAを 53 ; 入れておく 以下、私の憶測でコードの動作を記述させて頂きます。 12行目のmov ax, word [msgBack] ・axレジスタに、wordで表された、msgBackのアドレスを格納している。 16行目のmov word [es:di], ax ・wordのデータになる、es:di(esに対して、diがオフセットアドレスと見て)、axのデータを格納している。 23行目のmov byte [es:edi], 'A' ・byteのデータになる、es:ediに対して、'A'と言う値を格納している。 50行目times 510 - ($ - $$) db 0 ・これに関しては全くわかりません。$がそのそもよくわかりません。 お忙しい中、誠に恐縮ではありますが、以上をご確認して頂き、 先輩方、ご教示宜しくお願い致します。

  • 自分でアセンブラ言語を作れる?

    自分でアセンブラ言語を作れる? あるCPUにmov命令というのがありますが命令名をソフトウェアレベルで変えることは 出来るのでしょうか? (mov ax,1をmove ax,1にしたり) アセンブラはCPUが同じならどれも同じだと思っていたのですが プログラムを終了する時、windowsはint 21hなのにlinuxはint 0x80なので 疑問に思いました。

  • ax^3+bx^2+cx+d=0がα、β、γを解に持つならばax^3+

    ax^3+bx^2+cx+d=0がα、β、γを解に持つならばax^3+bx^2+cx+d=a(x-α)(x-β)(x-γ)と変形できることを示せ。

  • x86のJP命令について。

    いつもお世話になっております。 小生、現在CASIOのポケコンZ-1GRにて、 x86アセンブリを勉強中のアセンブリ初心者です。 今回、先輩方にご質問させて頂きたいのは、 JP命令についてです。 まず、以下のコードを見てください。 ORG 2000H START: MOV AX,08888H XOR BX,BX MOV DX,00888H MAIN: AND DX,AX JP SETBX JMP RETURN SETBX: MOV BX,0001H RETURN: IRET END と記述し、アセンブル→実行しますと、BXに1が格納されます。 JP命令というのは、演算後、1のビット数が偶数の時にセットされるもので、 上記のコードだと、DXは0888のままなので、1のビット数は奇数でRETURNにジャンプするはずだと思うのですが。。。 お忙しい中、大変申し訳ございませんが、先輩方、ご教授宜しくお願い致します。

  • 共役複素数

    a、b、c、dは実数の定数である 方程式x^4+ax^2+bx^2+cx+d=0は4つの虚数解を持つ その解の内、ある2つの和は19+2iであり、他の2つの積は4+5iである このときa、b、c、dの値を求めよ 2つの解α、βを、 α=p+qi、β=r+si とおくと、その共役複素数 ¬α=p-qi、¬β=r-si も解で、 x^4+ax^2+bx^2+cx+d=(x-α)(x-β)(x-¬α)(x-¬β)と表せられる ここでα+β=19+2iとすると、 (x-α)(x-β)=x^2-(19-2i)x+(4+5i) (x-¬α)(x-¬β)=x^2-(19+2i)x+(4-5i) であり、x^4+ax^2+bx^2+cx+d=(x-α)(x-β)(x-¬α)(x-¬β)と表せることから、この右辺の積がx^4+ax^2+bx^2+cx+dと同じになる というところまで様々な方のおかげでたどり着いたのですが、右辺をかけると、-38x^3が出たりx^2の係数に虚数があったりとx^4+ax^2+bx^2+cx+dに合わなくなってしまったんです どうすればいいでしょうか?教えてください

  • 二次方程式

    3つのxの2次方程式  ax^2+2bx+c=0 bx^2+2cx+a=0 cx^2+2ax+b=0 について、すくなくとも1つは実数解をもつことを証明せよ。(ただし、a, b, cは0以外の実数) という問題なのですが、判別式を使って考えているのですが、よく分かりません。どなたかアドバイスをお願いします。

  • 最適化の問題に詳しい方

    お世話になっております。 Let x0 and x1 be solution of min tcx+c0 s.t. Ax≦a, Bx=b, x≧0 Show that all points on the line with end points x0 and x1 are solutions. (A:m×n matrix, a,b,c∈R^n, B:k×n matrix) 訳せば 「x0とx1を min tcx+c0 s.t. Ax≦a, Bx=b, x≧0 の解とする時、終点をx0とx1とする線上の全ての点が解を示せ」 これはどうやって示せばいいのでしょうか? tは転置行列の意味だと思います。 x_0とx_1がAx≦a,Bx=b,x≧0を満たしていて、tcx0=tcx1ならば点λx0+(1-λ)x1も Ax≦a,Bx=b,x≧0を満たしていて、同じ最適値(?)を持つ事をいいのかと思いますが この手の問題になれてらっしゃる方,お教え下さい。