利用DOS功能呼叫10實現從鍵盤輸入一串字元「abcde」,然後輸出3次。注 字串長度不超過字元

2022-01-15 18:48:13 字數 5919 閱讀 5399

1樓:做而論道

assume cs:code, ds:datadata segment

max db 10

act db 0

str db 10 dup ('$')data ends

code segment

start:

mov ax, data

mov ds, ax

lea dx, max

mov ah, 10

int 21h

mov max, 10

mov act, 13

lea dx, max

mov ah, 9

int 21h

int 21h

int 21h

mov ah, 4ch

int 21h

code ends

end start

從鍵盤輸入一串字元 「abcde」,然後輸出3次。

注:字串長度不超過10個字元。

輸入:abcde↙

輸出:abcde

abcde

abcde

不會有比本程式更簡單的了。

2樓:匿名使用者

;利用dos功能呼叫9、10實現從鍵盤輸入一串字元 「abcde」,然後輸出3次。注:字串長度不超過5個字元

assume cs:code, ds:datadata segment

input db 0ah,0dh,"please input a string:$"

crlf db 0ah,0dh,'$'

buf db 5 ;字串長度不超過5個字元,所以這裡是5db ?

db 5 dup (?) ;字串長度不超過5個字元,所以這裡是5num db 3 ;然後輸出3次,所以這裡是3data ends

stack segment

db 16 dup (?)

stack ends

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,10h

;顯示提示字串please input a string:

lea dx,input

mov ah,9

int 21h

;接受使用者輸入的字串

lea dx,buf

mov ah,10

int 21h

;輸出回車空行

lea dx,crlf

mov ah,9

int 21h

;cx清0

xor cx,cx

;num = 3,所以cl = 3,輸出3次字串mov cl,num

next: push cx

;獲取使用者輸入的字串的字元個數

mov cl,buf+1

;獲取存放使用者輸入的字串的偏移位址

lea si,buf+2

next1:

;獲取字元,然後輸出

mov dl,[si]

mov ah,2

int 21h

inc si

loop next1

lea dx,crlf

mov ah,9

int 21h

pop cx

loop next

mov ax,4c00h

int 21h

code ends

end start

ps:若有不明白的地方,可以追問

3樓:尼歐趙

把code段這樣改,稍微簡潔點。

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,10h

;接受使用者輸入的字串

lea dx,str

mov ah,10

int 21h

mov cx,3

next:

;輸出lea dx,str

mov ah,9

int 21h

loop next

mov ax,4c00h

int 21h

code ends

利用dos的oah功能從鍵盤輸入一串字元,並將此字串在顯示屏上顯示出來

4樓:做而論道

利用dos的oah功能從鍵盤輸入一串字元,並將此字串在顯示屏上顯示出來。

;-------------------------------------

data segment

string1 db 'press any keys please: ', 10, 13, 24h

string2 db 13, 10, 'the string is: ', 10, 13, 24h

buf1 db 100

db ?

db 100 dup(?)

data ends

;-------------------------------------

code segment

assume cs:code, ds:data, es:data

start:

mov ax, data

mov ds, ax

l:mov ah, 09h ;輸入提示

lea dx, string1

int 21h

mov ah, 0ah

lea dx, buf1 ;鍵盤輸入到快取區

int 21h

;------------------------------

mov ah, 09h ;輸入提示

lea dx, string2

int 21h

lea si, buf1 ;鍵盤輸入快取區

inc si

mov cl, [si] ;取出實際輸入個數

mov ch, 0

inc si

l3:mov ah, 02h ; 顯示

mov dl, [si]

int 21h

inc si

loop l3

;------------------------------

exit:

mov ah, 4ch

int 21h

code ends

end start

;-------------------------------------

用彙編怎樣實現從鍵盤輸入一串字元至記憶體(利用dos功能呼叫)?

5樓:匿名使用者

利用dos功能呼叫,用組合語言程式設計實現從鍵盤輸入一串字元存至記憶體,請參考如下程式(輸入字元數最多200字元,用回車符表示輸入結束):

data segment

str db 200 dup (0)

data ends

code segment

assume cs:code,ds:datamain proc far

start:

mov ax,data

mov ds,ax

lea si,str

inpstr: mov ah,06h;dos功能呼叫,讀取從鍵盤輸入的字元

int 21h

jnz inpstr;無字元可讀

mov [si],a1;儲存讀取的字元

inc si;增量指標指向下一單元

xor al,0dh;判斷是否回車符

jz endinp;是則輸入結束

jmp inpstr;不是回車符繼續等待輸入endinp: mov ah,4ch;終止當前程序int 21h

retmain endp

code ends

end start

6樓:娃哈哈ab鈣奶

你的快取區設定有誤的,沒有設定最大輸入的字元數,預設為0,那當然不行。

0ah功能呼叫的時候要求將ds:dx指向緩衝區的第乙個位元組,並設定緩衝區的第乙個位元組以便指出所能容納的最大字元的最大個數。正確如下~~~

dat segmentnumbers db 100 ;能存最大字元數,這裡一定要設定db ? ;你輸入的字元數,由計算機自動填寫db 100 dup(?) ;開始存放字元的段dat endssta segment stackdw 50 dup(?

)sta endscod segmentassume cs:cod,ds:datstart:

mov ax,datmov ds,ax

mov ah,0ah

mov dx,offset numbers ;取得存放資料的記憶體偏移位址,從鍵盤中輸入

int 21h

mov ax,4c00h

int 21h

cod ends

end start

從鍵盤輸入一串字串,統計字串中特定字元的個數,並輸出個數c語言

7樓:好程式設計師

主要**:

char s[1000];

int i,j=0;

scanf("%s",s);

for(i=0;i<1000;i++)

dos系統功能呼叫是如何實現的?

8樓:匿名使用者

1、什麼是dos系統功能呼叫 系統功能呼叫是dos為使用者提供的常用子程式(80多個),可在組合語言程式中直接呼叫。這些子程式的主要功能包括:

(1)裝置管理(如鍵盤、顯示器、印表機、磁碟等的管理)

(2)檔案管理和目錄操作

(3)其他管理(如記憶體、時間、日期等管理)

這些子程式給使用者程式設計帶來很大方便,使用者不必了解有關的裝置、電路、介面等方面的問題,只需直接呼叫即可。2、呼叫方法

dos功能呼叫的子程式已按順序編號——功能號(00h~68h),其呼叫方法是:

(1) 功能號→ah

(2) 入口引數→指定暫存器

(3) int 21h

使用者只須給出以上三方面資訊,dos就可根據所給資訊自動轉入相關子程式執行。3、常用的系統功能呼叫(1)鍵盤輸入

1) 1號呼叫——從鍵盤輸入單個字元

呼叫格式: mov ah,1

int 21h

功能: 等待從鍵盤輸入乙個字元並送入al。

執行時系統將掃瞄鍵盤,等待有健按下,一旦有健按下,就將其字元的ascii碼讀入,先檢查是否ctrl-break,若是,退出命令執行;否則將ascii碼送al,同時將該字元送顯示器顯示。

2) 10號呼叫——從鍵盤輸入字串

功能: 從鍵盤接收字串送入記憶體的輸入緩衝區,同時送顯示器顯示。

呼叫前要求: 先定義乙個輸入緩衝區

maxlen db 100 ;第1個位元組指出緩衝區能容納的字元個數,即緩衝區長度,不能為0

aclen db ? ;第2個位元組保留,以存放實際輸入的字元個數

string db 100 dup(?) ;第3個位元組開始存放從鍵盤輸入的字串。

呼叫格式: lea dx,maxlen(緩衝區首偏移位址)

mov ah,10

int 21h

注意:呼叫時,要求ds:dx指向輸入緩衝區 參考:www.wxiu.com

c語言程式設計答案程式設計實現,從鍵盤輸入字元,則輸出其後的字元,如輸入 A 則輸出 B

程式原始碼如下 define crt secure no warnings vs環境下需要,vc不需要 include void main 程 序執行結果如下 擴充套件資料 在計算機中,所有的資料在儲存和運算時都要使用二進位制數表示 因為計算機用高電平和低電平分別表示1和0 例如,像a b c d這...

在C語言中編寫一程式,實現從鍵盤輸入大寫字母,要求改用小

實現從鍵盤輸入乙個大寫字母,改用小寫字母輸出,可以使用下面的方法 include int main 執行效果如下 include void main else 編譯已經通過 include void main void include void main printf c n x include i...

怎麼用c語言寫程式。實現從鍵盤輸入字元並寫入檔案

include define n 50 void main file pfile pfile fopen outfile.txt wb fwrite buf,1,strlen buf pfile fclose pfile 1 抄c語言標準庫提供了一系列檔案操作函式。檔案操作函式一般以f 單詞的形式來...