史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2008-12-12, 01:24 AM   #1
erstauska
註冊會員
榮譽勳章

勳章總數
UID - 314086
在線等級: 級別:0 | 在線時長:0小時 | 升級還需:5小時
註冊日期: 2008-11-25
文章: 1
精華: 0
現金: 1 金幣
資產: 1 金幣
預設 疑問 - 字串比較的問題

以下是我寫的輸入2字串 比較字串內容是否相等 是則輸出y 否則輸出n
但輸入1111和11是卻是想等 是哪裡出錯了呢
找書找了很久 還是不知錯在哪



STACKSEG SEGMENT STACK
BYTE 1024H DUP(?)
STACKSEG ENDS

DATASEG SEGMENT 'DATA'
STRING1 BYTE 10 DUP(?),'$'
STRING2 BYTE 10 DUP(?),'$'
RESULT1 BYTE 'Y','$'
RESULT2 BYTE 'N','$'
MSG1 BYTE 'PLEASE ENTER TWO STRING TO COMPARE : ','$'
MSG2 BYTE 'PASS (ENTER) TO CONTINUE , OR (ESC) TO EXIT..','$'
DATASEG ENDS

CODESEG SEGMENT 'CODE'
ASSUME CS:CODESEG, DSATASEG, SS:STACKSEG

BEGIN: MOV AX, DATASEG
MOV DS, AX
MOV ES, AX

AGAIN: CALL WELLCOME
CALL CRLF
CALL TYPE1
CALL CRLF
CALL TYPE2
CALL CRLF
CALL COMPARE
CALL CRLF
CALL CHECK
CALL CRLF
JMP AGAIN


TYPE1 PROC NEAR
MOV CX, 0
MOV SI, 0
STR1:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT
MOV STRING1[SI], AL
CMP CX, 9
JE EXIT
INC CX
JMP STR1


EXIT:
RET
TYPE1 ENDP

TYPE2 PROC NEAR
MOV CX, 0
MOV SI, 0
STR2:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT
MOV STRING2[SI], AL
CMP CX, 9
JE EXIT
INC CX
JMP STR2

EXIT:
RET
TYPE2 ENDP


COMPARE PROC NEAR
LEA SI, STRING1
LEA DI, STRING2
CLD
MOV CX,9
REPZ CMPSB
JNE AA
MOV DX, OFFSET RESULT1
JMP BB
AA:MOV DX, OFFSET RESULT2
BB:MOV AH, 09H
INT 21H
RET
COMPARE ENDP

CRLF PROC NEAR
MOV DL, 0DH
MOV AH, 2
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
RET
CRLF ENDP

WELLCOME PROC NEAR
MOV DX, OFFSET MSG1
MOV AH, 09H
INT 21H
RET
WELLCOME ENDP

CHECK PROC NEAR
MOV DX, OFFSET MSG2
MOV AH, 09H
INT 21H
READ: MOV AH, 07H
INT 21H


CMP AL, 1BH
JE ENDING
CMP AL, 0DH
JE EXIT
LOOP READ
ENDING: MOV AH, 4CH
INT 21H
EXIT:
RET
CHECK ENDP

CODESEG ENDS
END BEGIN
erstauska 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2009-03-25, 04:47 PM   #2 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 320761
在線等級: 級別:0 | 在線時長:0小時 | 升級還需:5小時
註冊日期: 2009-03-23
文章: 1
精華: 0
現金: 2 金幣
資產: 2 金幣
預設

以下是我寫的輸入2字串 比較字串內容是否相等 是則輸出y 否則輸出n
但輸入1111和11是卻是想等 是哪裡出錯了呢
找書找了很久 還是不知錯在哪


REPZ CMPSB 這個指令只能用在相同長度的字串比較



TYPE1 PROC NEAR
MOV CX, 0
MOV SI, 0
STR1:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT
MOV STRING1[SI], AL
CMP CX, 9
JE EXIT
INC CX
--------------------
加一行 INC SI
在 TYPE1 PROC 相同位置也加一行 INC SI
--------------------
JMP STR1
taur02 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
討論 - 也是汽車的問題--請問車子嚴重刮傷怎麼處理比較好? rezard 生活話題、日常閒聊、喇勒唬爛灌水區 28 2008-07-15 01:38 PM
網頁的問題 thomes 軟體應用問題討論區 0 2003-07-29 10:27 AM
mp3 player及mp3隨身碟的字串問題 kaysky 硬體疑難使用問題討論區 3 2003-06-29 12:47 PM
關於記憶體 超過1.0G以上 的問題 Stars_River 硬體疑難使用問題討論區 9 2003-06-23 06:12 AM


所有時間均為台北時間。現在的時間是 04:03 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1