8086匯編語言問題
TABLE中連續(xù)16個(gè)單元中存放著0-15的平方值,使用鍵盤輸入一個(gè)數(shù)字X(0≤X≤15),,并將結(jié)果顯示在屏幕中,。
自己嘗試編寫了一下,主要在于輸出到屏幕不知道怎么處理,。 該怎么修改,?
你程序的問題是你沒有計(jì)算機(jī)中處理字符/字串/數(shù)組的理論基礎(chǔ)
就對輸入而言,你的
MOV AH,1
int 21H
它只能輸入一個(gè)字符(且前面的MOV AH,0完全多余),不是輸入一個(gè)數(shù)字
如你輸入一個(gè)1
那么 AL中是它的ASCII碼 31H
且你不能輸入兩位數(shù)字的
而輸出更不用說了,它要將內(nèi)部的數(shù)值先轉(zhuǎn)成BCD碼,然后按字符輸出的
你的程序要求有一定的難度的
給你參考:
1.輸入子程序
;輸入數(shù)據(jù)子程序,以空格或回車結(jié)束;結(jié)果在ax中input PROCpush bxpush cxxor bx,bxinput1:mov ah,1int 21Hcmp al,0dhje input2cmp al,20hje input2sub al,'0'mov cl,alxor ch,chmov ax,bxmov bx,10mul bxmov bx,axadd bx,cxjmp input1input2:mov ax,bxpop cxpop bxretinput ENDP
///輸出子程序,輸出數(shù)在BX中,支持負(fù)數(shù)DISPBXD PROC push sipush dxpush cxpush bxpush axCMP BX,0 JGE ZS MOV DL,'-' MOV AH,2 INT 21H ZS:MOVSI,10XORCX,CXMOVAX,BXNEXT:MOVDX,0DIVSIPUSHDXINCCXCMPAX,0JNZNEXTOUTP:POPDXADDDL,30HMOVAH,2INT21HLOOPOUTP
mov dl,0dhmov ah,2int 21Hmov dl,0ahmov ah,2int 21H
pop axpop bxpop cxpop dxpop si RETDISPBXDENDP
當(dāng)然,你可以在這個(gè)基礎(chǔ)上簡化下
Tags:匯編語言