有關組語的作業問題 ~提供20點

用組語(asm)寫一個程式,將輸入的大(小)字母轉換成小(大)字母。

用c 我還會寫,用組語我就不會了><"

可以提供程式碼和說明教學嗎?我想學會我不會的東西。多謝了!!

1 Answer

Rating
  • Anonymous
    2 decades ago
    Favorite Answer

    include irvine32.inc

    .data

    prompt db "Please Enter a string: ",0

    result db "The Result is: ",0

    ;用來存輸入的變數~~~大小101 byte~~~~最後一byte為結束byte (0)

    input db 100 dup(?),0

    .code

    main PROC

    ;把第一個訊息印出

    mov edx, OFFSET prompt

    call WriteString

    ;從鍵盤讀入字串~寫入 input裡~edx指定記憶體位置~ecx指定輸入最大字元數

    ;傳回ecx~讀入的總字元數

    mov edx, OFFSET input

    mov ecx, SIZEOF input-1

    call ReadString

    ;從input的最後一個字元開始~到第一個字元~~把其大小寫轉換

    switch:

    mov al, input[ecx]

    call CapSwitch

    mov input[ecx],al

    dec ecx

    jnz switch

    ;印出第二個訊息

    mov edx, OFFSET result

    call WriteString

    ;印出傳換結果

    mov edx, OFFSET input

    call WriteString

    ;結束程式

    exit

    ;轉換大小寫的副程式

    CapSwitch:

    ;判定是否為英文字母~從A~Z(41h~5Ah) && a~z(61h~7Ah)

    cmp al, 'A'

    jb NotLetter

    cmp al, 'z'

    ja NotLetter

    cmp al, 'a'

    jae IsLetter

    cmp al, 'Z'

    ja NotLetter

    ;是英文字母則轉換

    IsLetter:

    xor al, 20h~把6xh變成4xh, 4xh 變成6xh

    ;不是英文字母則退出

    NotLetter:

    ret

    main ENDP

    end main

    還需要更詳細的話~請講一聲

    Source(s): Assembly Language For Intel-Based Computer, Fourth Edition, Kip R. Irvine
Still have questions? Get your answers by asking now.