タイトル | : more に行番号表示を |
投稿日 | : 2023/01/21(土) 23:40 |
投稿者 | : konno | 番 号 | : 10523 10481 番 konno さんへのコメント |
> miel もそうですが、ToolsのmoreのDOCを読んで、これは勝てないわと思いました。> 勉強のために出来そうなところは機能追加してみたいとは思います。#10500:DOS Verチェック verc.com を作ってみた このツールの数字表示でアセンブラの基礎から勉強しなおしたおかげで 自力で多数桁の表示ルーチンが出来ました。\(^^)/ ヤッタ- どうやら私は基礎を飛ばして応用力だけで今まで世渡りをしていたようです。 それで、改造版more に、行番号表示を追加できました。 print0 proc ; ※ 大文字は力持さんのソースから頂きました。 ;;力持MS-DOS VERSION CHECK VERS V. 11 PUSH AX ;;レジスタを保存致します。 PUSH BX PUSH CX PUSH DX PUSH SI mov dl,'[' mov ah,02 int 21h ; [ 表示 mov ax,line_count ; 総行数 xor bx,bx mov dx,offset moji2 ; dx に moji2 のアドレスを代入 mov si,dx ; si に moji2 のアドレスを代入 mov di,si loop5: xor dx,dx xor cx,cx mov cx,10 ;;10でわり算致します。 div cx ; SRC = 1word : DX:AX ÷ SRC の余り→DX、商→AX add dl,30h ; 数字を文字に変換 mov [si], dl ; 文字バッファへ送ります。 dec si ; アドレスを 1byte 戻す mov di,si inc bx cmp ax,0 je loop9 cmp bx,5 ; 数字桁数指定:32767行までは行ける? jb loop5 loop9: dec bx mov dx,offset moji2 ; 行数の文字データの末尾 sub dx,bx ; 桁数分アドレスを戻す mov ah,09 int 21h ; 行数表示 POP SI POP DX POP CX POP BX POP AX ;;レジスタを復活致します。 ret print0 endp これで、32767行まで表示出来るはずです。 で、ログファイルで type xxxx.log | morek やってみたら、途中で終了してしまいました。 ログファイルの中に、^Z があって、そこで終了したのです。 それにしても、32767行まで表示させるのは大変すぎます。 そうだ! 今度は行ジャンプ機能を付けよう。 兎年だけに、ぴょんぴょんとジャンプだー
- No.10523 一括表示へ - コメント元:10481 一括表示へ - [ 返信 ] [引用無し] pre