組合語言學習 輸入和顯示字元

2021-06-21 14:32:27 字數 3099 閱讀 2281

輸入和顯示字串   在上以彙編部落格中已經寫到  

輸入 ah = 01h   al 存放 輸入的字元  

輸出  ah = 02 h dl 存放輸出的字元

因此關鍵** :是

mov ah , 01h

int 21h

mov [char], al

mov dl, [char]

mov ah , 02h

int 21h

由上可以知道完整** 應該是 :

datas segment

char dw ?; 定義char 為db 型別 但是不賦值

datas ends

stacks segment

db 256 dup(?);申請 256 個位元組空間

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

;**初始化

mov ah ,01h; 輸入乙個字元 並且回顯到螢幕上 輸入的字串儲存在 al 中

int 21h

mov [char] , al

mov dl , [char] ; 顯示乙個字元 該字元在 dl 中

mov ah , 02h;

int 21h

mov ah , 07h ;

int 21h

mov dl,al;

mov ah , 02h;

int 21h;

mov ah,4ch

int 21h

codes ends

end start

上面還有一些問題 。。。。 關於字串呼叫

int 21h 詳解_字元功能呼叫類(character-oriented function)

01h、07h和08h —從標準輸入裝置輸入字元

02h —字元輸出

03h —輔助裝置的輸入

04h —輔助裝置的輸出

05h —列印輸出

06h —控制台輸入/輸出

09h —顯示字串

0ah — 鍵盤緩衝輸入

0bh —檢測輸入狀態

0ch —清輸入緩衝區的輸入功能

(1)、功能01h、07h和08h 

功能描述:從標準輸入裝置(如:鍵盤)讀入乙個字元。該中斷在處理過程中

將一直處於等待狀態直到有字元可讀為止。該輸入還可被重定向,如果這樣

做,則無法判斷檔案是否已到檔案尾

入口引數:ah=01h,過濾掉控制字元,並回顯

=07h,不過濾掉控制字元,不回顯

=08h,過濾掉控制字元,不回顯

出口引數:al=輸入字元的ascii碼

(2)、功能02h

功能描述:向標準輸出裝置(如:螢幕)輸出乙個字元。該輸出還可被重定向,

如果這樣做,則將無法判斷磁碟是否滿

入口引數:ah=02h

dl=待輸出字元的ascii碼

出口引數:無

(3)、功能03h

功能描述:從輔助裝置讀入乙個字元,該輔助裝置的預設值為com1

入口引數:ah=03h

出口引數:al=讀入字元的ascii碼

(4)、功能04h

功能描述:向輔助裝置輸出乙個字元,該輔助裝置的預設值為com1

入口引數:ah=04h

dl=待輸出字元的ascii碼

出口引數:無

(5)、功能05h

功能描述:向標準的輸出裝置輸出乙個字元。該預設的輸出裝置為lpt1埠

的印表機,除非用mode命令來改變

入口引數:ah=05h

dl=待輸出字元的ascii碼

出口引數:無

(6)、功能06h

功能描述:控制台(如:鍵盤、螢幕)輸入/輸出。如果輸入/輸出操作被重定向,

那麼,將無法判斷檔案是否已到檔案尾,或磁碟已滿

入口引數:ah=06h,dl=輸入/輸出功能選擇

出口引數:若dl=00h-feh,則此功能為輸出,dl為待輸出字元的ascii碼;

若dl=0ffh,則此功能為輸入,此時:若zf=1,則無字元可讀,否則,

al=讀入字元的ascii碼

(7)、功能09h

功能描述:輸出乙個字串到標準輸出裝置上。如果輸出操作被重定向,那麼,

將無法判斷磁碟已滿

入口引數:ah=09h

ds:dx=待輸出字元的位址

說明:待顯示的字串以』$』作為其結束標誌

出口引數:無

(8)、功能0ah

功能描述:從標準輸入裝置上讀入乙個位元組字串,遇到「回車鍵」結束輸入

(輸入的字元在標準的輸出裝置上有回顯)。如果該輸入操作被重定向,那麼,

將無法判斷檔案是否已到檔案尾

入口引數:ah=0ah

ds:dx=存放輸入字元的起始位址

接受輸入字串緩衝區的定義說明:

1、第乙個位元組為緩衝區的最大容量,可認為是入口引數;

2、第二個位元組為實際輸入的字元數(不包括回車鍵),可看作出口引數;

3、從第三個位元組開始存放實際輸入的字串;

4、字串以回車鍵結束,回車符是接受的最後乙個字元;

5、若輸入的字元數超過緩衝區的最大容量,則多出的部分被丟棄,系統並

發出響鈴,直到輸入「回車」鍵才結束輸入。 

例如:buff 80, ?, 80 dup(?)   ;最多接受80個字元

出口引數:無

(9)、功能0bh

功能描述:檢查標準輸入裝置上是否有字元可讀。該輸入操作可被重定向

入口引數:ah=0bh

出口引數:al=00h——無字元可讀;ffh——有字元可讀

(10)、功能0ch

功能描述:清空當前的標準輸入緩衝區,再讀入字元。其輸入操作可被重定向

入口引數:ah=0ch

al=01h、06h、07h、08h或0ah

出口引數:若入口引數al為0ah,則ds:dx=存放輸入字元的起始位址,否則,

出口引數al=輸入字元的ascii碼

組合語言學習

參考書籍 組合語言 王爽 著 清華大學出版社 選單導航 一 彙編基礎知識 二 暫存器和常見彙編指令演示 一 基礎知識 1 彙編指令是機器指令的助記符,同機器指令一一對應 2 每一種cpu都有自己的彙編指令集 3 cpu可以直接使用的資訊在儲存器中存放 4 在儲存器中指令和資料沒有任何區別,都是二進位...

組合語言學習

持續更新 彙編指令 1.mov指令 mov是乙個傳送指令,可以實現以下操作 有一點需要注意,資料不能直接傳給段暫存器,比如mov ds,100h就是錯誤的。但是可以將其他暫存器中的值賦給段暫存器。段暫存器有cs,ds,ss,es等。如果你想知道為什麼,那就可以去了解一下關於每條指令的硬體實現。後面還...

組合語言學習之組合語言源程式的輸入

在dos下輸入彙編源程式的方法 一 環境的搭建 二 熟悉debug的一些除錯指令 當顯示器顯示出提示符 時,說明已進入到debug狀態,此時,可以用debug命令列來操作 1.r 指令 用法 r 暫存器的名字 作用 用於檢視暫存器的值 register的首字母 或者修改暫存器的內容。當暫存器的名字省...