1樓:
改了一下,自己對比下與你原來的有什麼不同吧data segment
buf db 30,0,31 dup("$")ends
code segment
assume cs:code,ds:datastart:
mov ax, data
mov ds, ax
mov ah,0ah
mov dx,offset buf
int 21h
mov ah,09h
mov dx,offset buf+2
int 21h
mov ah, 4ch
int 21h
ends
end start
2樓:
0a號功能使用錯誤。
接受輸入字串緩衝區的定義說明:
1、第乙個位元組為緩衝區的最大容量,可認為是入口引數;
2、第二個位元組為實際輸入的字元數(不包括回車鍵),可看作出口引數;
3、從第三個位元組開始存放實際輸入的字串;
buf db 30,0,30 dup(?)然後就是0a號功能不是以$作為字串結尾的,所以應該自己手動加上,這樣使用9號功能的時候才不會出錯
組合語言怎麼實現乙個字串的輸入與輸出
3樓:志強強吧
輸入:data segment
buff db 100
db ?
db 100 dup(?)
data ends
mov ax,data
mov ds,ax
lea dx,buff
mov ah,0ah
int 21h
輸出:hello
mes db 'hello $'
mov ax,data
mov ds,ax
lea dx,mes
mov ah,9
int 21h
4樓:灬**灬銘
用21號中斷的10號功能輸入。。9號功能輸出。。
5樓:專業保證
mov ax 0ah
int 21h
mov ax 09h
int 21h
[組合語言]由鍵盤輸入任意字串 然後顯示出來
6樓:冠月朗
data segment
keyboard db 256,?,256 dup (?)data ends
code segment
assume cs:code,ds:datamain proc far
mov ax,data
mov ds,ax
lea dx,keyboard
mov ah,0ah;輸入字串
int 21h
lea di,keyboard
mov cl,[di+1];取出實際輸入字元的個數mov ch,0
add di,2;指向第乙個字元
next:mov dl,[di]
mov ah,2;迴圈輸出字元
int 21h
inc di
loop next
mov ah,4ch
int 21h
main endp
code ends
end main
7樓:匿名使用者
這個程式能接受256個字元,如果你還想輸入更多的字元,只需要把空間留的更多一點就行
data segment
keyboard db 256 dup (?) ;為輸入的字串預留空間
data ends
code segment
assume cs:code,ds:data
main proc far
mov ax,data
mov ds,ax
lea dx,keyboard ;這個中斷能使你在輸入時就能看見輸入的字元
mov ah,9
int 21h
mov ah,1 ;這個中斷是為了使程式暫停一下,不然你按回車鍵就立刻結束
int 21h
mov ah,4ch
int 21h
main endp
code ends
end main
組合語言字串輸出問題
組合語言問題,菜鳥請求高手,組合語言問題,輸出了正確結果,但是下面還輸出了許多亂碼??
湯旺河邊 dos功能呼叫9號功能 顯示以ds dx開始的字串,當遇到乙個 時,結束顯示。樓主程式中,lea si,aa add si,5 mov byte ptr si 把字串中第4個字元改為 致使顯示前3個字元之後,結束顯示,這是導致 只是輸出前3個 的癥結所在。把這三條指令的後兩條刪掉即可。下面...
c語言格式輸入輸出函式,C語言中輸入輸出函式有幾種格式?
一 格式輸出函式printf 1 呼叫形式一般為 printf 格式化控制字串 輸出表列 2 格式化控制字串用於指定輸出格式,它有三種形式 1 格式說明符 規定了相應輸出表列內容的輸出格式,以 打頭,如 d o等 2 轉義字元 用來輸出轉義字元所代表的控制 或者特殊字元,比如常用的 n t 3 普通...
c語言程式設計中怎麼輸入輸出姓名漢字
杜哥是個小天才 如果您是用tc進行程式設計,那麼只能顯示英文,如果您是用vc進行程式設計就可以顯示中文了。兩者只是編譯工具不一樣,程式語言的使用是一樣的。如下 include include int main char name 6 20 char temp 20 printf 請輸入6個人的名字 ...