![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() |
|
|
主題工具 | 顯示模式 |
|
|
|
|
#1 (permalink) |
|
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
call ReadString
call Writestring call Crlf 這三行沒有把副程式寫出來...? 不知您用的是什麼組合語言軟體 ? mov edx, OFFSET prompt 相當於 lea edx,prompt ;把prompt變數的偏移位址傳入edx,使prompt變成鍵盤的緩衝區 這一段 語法:
mov edx,OFFSET prompt ;顯示對話,印出edx裡面的字串
mov esi,OFFSET stringIn
mov ecx,MAX ;buffer size - 1
L1:
mov ah,0AH
int 21H
AND byte ptr[esi],1101111b ;清除位元5
inc esi
loop L1
如是要 "顯示對話,印出edx裡面的字串" 請參考前面講的 語法:
ShowStr MACRO message
mov AH ,09H
lea EDX,message
int 21H
ENDM
...
ShowStr prompt
lea edx,**要顯示的字串** ;獲得其偏移位址 int 21h |
|
|
送花文章: 2060,
|
|
|
#2 (permalink) |
|
註冊會員
|
我用的是MASM615~後來看了一下
原來是我放錯地方了@@ 寫的差不多了~只是有點小BUG~ 大轉小是OK的~小轉大有點問題~例如我輸入kinco 他會出現KiNcO ~小弟看了很久~找不到問題在哪~ 請大大~有發現問題所在的話~告知小弟一下~謝謝~ 語法:
INCLUDE Irvine32.inc
.data
prompt BYTE "Enter your name: ",0Dh,0Ah,0 ;定義對話串
MAX = 80 ;max chars to read
stringIn BYTE MAX+1 DUP (?) ;room for null
.code
main PROC
mov edx, OFFSET prompt ;顯示對話
call WriteString ;印出edx裡面的字串
call crlf ;空一行
mov edx, OFFSET stringIn
mov ecx, MAX ;buffer size - 1
call ReadString
mov ecx, 0
mov esi, 0
mov ecx, LENGTHOF stringIn
mov esi, OFFSET stringIn
L1:
mov al,byte ptr[esi]
OR al, 11011111b
cmp al, 11111111b ;判斷是不是小寫
je L2 ;如果是小寫就跳到L2
jmp L3 ;如果不是就跳到L3
L2:
AND byte ptr[esi], 11011111b ;小->大
inc esi
L3:
OR byte ptr[esi], 00100000b ;大->小
inc esi
next:
loop L1
call Writestring
call Crlf ;空一行
exit
main ENDP
END main
|
|
|
送花文章: 23,
|