1樓:匿名使用者
因為你輸出的字串是:80,?,?????
lea dx,buffer
int 21h
把它改為:
lea dx,buffer+2
int 21h
2樓:匿名使用者
你的程式有兩個錯誤
1。呼叫mov ah,0ah int21h 後dx指向的是緩衝區的開始,不是結尾,因此你加$的位置應該是:緩衝區開始地址+2+輸入位元組數
2。顯示時,dx應該指向字串的開始,而不是緩衝區的開始,兩者差兩個位元組。
除錯好的程式如下:
datas segment
buffer db 80
db 0
db 80 dup (0);此處輸入資料段**datas ends
stacks segment
;此處輸入堆疊段**
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacksstart:
mov ah,0ah
mov dx,seg buffer
mov ds,dx
lea dx,buffer
int 21h
inc dx
mov si,dx
mov cl,byte ptr [si] ;輸入的位元組數mov ch,0
add si,2
add si,cx ;字串結尾mov byte ptr [si],'$'
push ds
pop es
mov di,offset buffer
mov ax,0a0dh ;回車換行stosw ;把緩衝區的開始兩個位元組填充成回車換行,是為了讓結果和輸入分別在兩行上顯示
mov ah,09h
lea dx,buffer
int 21h
mov ah,4ch
int 21h
codes ends
end start
求助!用c語言編寫一個程式,從鍵盤上輸入一串符號(以回車鍵為結束)將其以字串存入一位陣列(接補充)
3樓:伍拾步
這樣???
#include
void main ()
4樓:手機使用者
#include
main()
彙編程式 接受鍵盤輸入字元,若輸入為字母,則顯示 L ,若為數字,則顯示 D ,其他的則顯示 O
直接寫主程式哈 start mov ah,1 int 21h cmp al,30h jb other cmp al,39h ja next num1 mov dl,d mov ah,2 int 21h jmp exit next cmp al,41h jb other cmp al,z jb chr...
求彙編程式 從鍵盤上輸入十六進位制數,將其轉換成十進位制數並
assume cs code,ds datasdatas segment hex db 4 dup 0 error db 13,10,input error datas ends code segment start mov ax,datas mov ds,ax mov ah,1h mov bx,o...
寫程式要求從鍵盤輸入整數然後採用冒
include int main max a 0 min a 0 for i 0 i 10 i if a i max max a i if a i min a i for i 0 i 10 i return 0 int main int i,j,t,a 10 printf please input ...