彙編輸入輸出(單個字元以及字串)
簡單的彙編程式碼演示
1、輸入輸出
輸入輸出主要有兩個中斷呼叫,分別為INT 16H 和INT 21H
1.1 INT 16H(ROM BIOS中斷)
原理:
16H中斷服務子程式提供了多個功能,每個功能對應一個功能號碼,呼叫他們的方法是
功能號->AH
INT 16H
功能號 | 功能 | 返回引數 |
---|---|---|
0 | 等待從鍵盤讀字元 | AL=字元的ASCII碼,AH=掃描碼 |
1 | 讀鍵盤緩衝區字元 | 若ZF=1,表示緩衝區空;否則表示緩衝區不空,則AL=ASCII值,AH=掃描碼 |
2 | 返回鍵盤狀態字 | AL=鍵盤狀態位元組 |
相關示例程式碼(可以跑起來):
主要是從鍵盤中讀取一個字元
DATAS SEGMENT
CHAR DB ?
DATAS ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,0 ;進行輸入
INT 16H
MOV CHAR,AL
mov AH,2 ;進行輸出
MOV DL,CHAR
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
1.1 INT 21H(DOS中斷)
原理:
功能號傳送AH暫存器,呼叫引數所求的位置,然後傳送INT 21H系統功能呼叫中斷
主要的功能號如下圖所示:
功能號 | 呼叫引數 | 說明 |
---|---|---|
1 | AL=輸入字串的ASCII值 | 等待從標準輸入裝置(通常為鍵盤)輸入一個字元,把接受到的字元的ASCII碼值送給AL,並顯示到顯示器的當前游標位置。該功能識別Ctrl-C鍵並做相應處理 |
2 | DL=輸出字元的ASCII值 | 該輸出功能也使游標跟隨移動 |
0AH | DS:DX指向自定義的輸入緩衝區首地址 | 從標準輸入裝置(通常為鍵盤)輸入一串字元到使用者定義的緩衝區,直到按下Enter鍵為止。在接受的同時顯示到螢幕上,並且識別Ctrl-C鍵,也處理DOS編輯器 |
示例程式碼:
;輸出hello world
;data資料段定義
data segment
string db 'hello world','$' ;切忌串結束符$
data ends
;程式碼段定義
code segment
;程式開始
start:
mov ax,data ;將資料段段地址裝入AX暫存器
mov ds,ax ;將資料段段地址通過通用暫存器AX裝入DS
mov dx,offset string ;將串的段內地址裝入DX
mov ah,09h ;呼叫DOS的09H號功能,傳入引數DS:DX=串地址,'$'結束字串
int 21h
mov ah,4ch ;呼叫DOS的4CH號功能,帶返回碼結束,返回碼存在於AL
int 21h
code ends ;程式碼段定義結束
end start ;程式結束
執行結果如下:
2、字串的輸入
這裡用到了上面DOS中斷的0AH功能
可以將一段字串讀入並顯示在螢幕上,程式碼如下
DATAS SEGMENT
buffer db 60;定義緩衝區長度
db ? ;預留實際輸入字元個數的技術單元
db 60 dup(?);設DS已是buffer的段基址
DATAS ENDS
STACKS SEGMENT
;此處輸入堆疊段程式碼
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ah,0ah;接受一串字元
lea dx,buffer
int 21h
;此處輸入程式碼段程式碼
MOV AH,4CH
INT 21H
CODES ENDS
END START
相關推薦
彙編輸入輸出(單個字元以及字串)
簡單的彙編程式碼演示 1、輸入輸出 輸入輸出主要有兩個中斷呼叫,分別為INT 16H 和INT 21H 1.1 INT 16H(ROM BIOS中斷) 原理: 16H中斷服務子程式提供了多個功能,每個功能對應一個功能號碼,呼叫他們的方法是
Java中將單個字元以及字串轉化為數字
在刷題過程中,突然忘記了如何進行轉換了,現系統的測試下: package SwordOffer; import java.util.DoubleSummaryStatistics; /** *
Linux下程式輸入輸出(^H、^C問題)
問題: 1、在linux的遠端終端上執行程式出現個人開發的應用按backspace鍵時有^H等不識別字符; 2、在CentOS7下的應用程式按backspace可以刪除但是delete鍵就無法實現像windows下的刪除後側的字元;
字串和格式化輸入/輸出(練習)
C Primer Plus第四章練習如下: 1.編寫一個程式,提示使用者輸入名和姓,然後以“名,姓”的格式打印出來 程式碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <st
Chapter 4 字串和格式化輸入\輸出(Character strings and formatted input\output)
重要內容 1. C中的字串一定以空字元結尾。這意味著陣列的容量至少比待儲存字串中的字元數多1. 2. 建立符號常量: 方法1: 宣告一個變數,然後將該變數設定為所需的常量。 方法2:用#define NAME value (注:一般用大寫表示符號
JAVA輸入輸出(IO)之字元流
上一篇《JAVA輸入輸出(IO)之位元組流》介紹了JAVA位元組輸入輸出流的一些用法,位元組流一般是用於讀寫二進位制資料的,當我們要讀些字元資料的時候,如文字檔案,就顯得有些麻煩。所以JAVA還提供了專門用於讀寫字元資料的字元流。 字元輸入流 java.
N!的階乘附帶簡單大整數類的輸入輸出(暫時沒有深入的了解)
ios sta 好的 n! width ear ati str cstring Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! 我的思路:就想著大整數類去了,才發現自己還不能很好的掌握,其實
linux雲自動化運維基礎知識4(系統結構,vim,管理輸入輸出,正則表達式)
linux運維linux系統結構 linux是一個倒樹結構 linux中所有的東西都是文件 這些文件都在系統頂級目錄“/” /就是根目錄 /目錄以下為二級目錄這些目錄都是系統裝機時系統自動建立的如圖2.二級目錄的作用/bin ##二進制可執行文件也就是系統命令/sbin ##系統管理
C++的終端輸入和輸出(C++學習筆記 3)
C++和C的輸入輸出方面的不同 在C中輸入和輸出,常使用函式scanf和printf。 C++除了可以照常使用這兩個函式進行輸入和輸出外,還增加了標準輸入流物件cin(念 see-in)和標準輸出流物件cout(念 see-out) scanf("%d",i); printf
C++檔案輸入和輸出(C++學習筆記 1)
為了開啟一個檔案供輸入或輸出,標頭檔案需要包括 #include<iostream> 和#include<fstream> iostream庫除了支援終端輸入輸出,也支援檔案的輸入和輸出。 1. 開啟一個輸出檔案 必須宣告一個ofstream型別的物件,來
C程式設計--對檔案的輸入輸出(案例)
第十章 問題一(fputc()函式的使用) 從鍵盤中輸入一些字元,逐個把他們送到磁碟上去,直到使用者輸入一個’#'鍵為止; #include<stdio.h> #include<stdlib.h>//用於 exit(0); int ma
Python基礎-python的輸入輸出(python2與python3的區別);算術運算子
程式:輸入(鍵盤)----程式碼(java/python/c)----輸出(螢幕) #每一行程式碼只負責完成一個動作 #print的作用:把內容輸出到螢幕上來 #python是一個格式非常嚴格的程式設計語言,每行程式碼前面都不要增加空格 輸入: 1.1 pyhon2*
LaTeX空行以及輸入矩陣(解決矩陣報錯)
Lax空行以及輸入矩陣 空行 空行可以使用 \\[2ex] 其中 2ex 可以隨便設為自己想要的距離。 輸入矩陣 輸入矩陣開始總是報錯,後來我發現是因為沒有什麼巨集包之類的,所以只需要引入巨集包就行了。 \documentclass{article
輸入/輸出(三)NIO.2
Path、Paths和Files核心API 早期的Java只提供了一個File類來訪問檔案系統,但File類的功能比較有限,它不能利用特定檔案系統的特性,File所提供的方法的效能也不高。而且,其大多數方法在出錯時僅返回失敗,並不會提供異常資訊。 具體的看這裡: https://blo
輸入/輸出(二)
推回輸入流 在輸入/輸出流體系中,有兩個特殊的流與眾不同,就是PushbackReader和PushbackInputStream: 這兩個推回輸入流都帶有一個推回緩衝區,當程式呼叫這兩個推回輸入流的unread()方法時,系統將會把指定陣列的內容推回到該緩衝區裡,而推回輸入流每次呼叫
輸入/輸出(一)
File類 訪問檔案和目錄 不管是檔案還是目錄都是使用File來操作的,File能新建、刪除、重新命名檔案和目錄,File不能訪問檔案內容本身。如果需要訪問檔案內容本身,則需要使用輸入/輸出流。 File類提供了很多方法來操作檔案和目錄: 流的分類 1. 輸入流和輸出流
C ++基礎 | 格式化輸出,檔案輸入輸出(File IO),標頭檔案(Header Files)_3
目錄 格式化輸出 檔案輸入輸出(File IO) 標頭檔案(Header Files) 格式化輸出 要格式化資料,我們可以使用轉義字串(Escape Sequence)也稱字元實體(Character Entity)。這些不需要任何額外的庫。 C ++ 轉義字串
java輸入輸出(13) 字符集和CharSet
簡而言之,把看得懂字元轉換成看不懂的二進位制數就是編碼,將二進位制數轉換成看得懂的字元就是解碼 字符集其實是很簡單,沒有任何技術難度的,只是為了解決二進位制序列和字元之間的對應關係,需要一個大家都認同的字符集而已。 具體的講解穿插在程式碼中 import java.ni
java輸入輸出(14)NIO.2
NIO.2是java7對原有的NIO進行了重大改進 這裡首先介紹一下Path,Paths,Files的一些用法,具體的講解穿插在程式碼中 //Path介面代表一個平臺無關的平臺路徑 import java.nio.file.Path; import java.nio.fi
java輸入輸出(17)監控檔案變化
可以通過WatchSercice物件來註冊監聽系統檔案的變化,具體的講解穿插在程式碼中 import java.nio.file.*; public class WatchServiceTest { public static void main(String a