国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

匯編語(yǔ)言(Assembly Language)習(xí)題:鍵盤(pán)輸入一個(gè)字符串,試將其中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,其它字符保持不變。

這篇具有很好參考價(jià)值的文章主要介紹了匯編語(yǔ)言(Assembly Language)習(xí)題:鍵盤(pán)輸入一個(gè)字符串,試將其中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,其它字符保持不變。。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.題目:鍵盤(pán)輸入一個(gè)字符串,試將其中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,其它字符保持不變。

前置知識(shí):匯編語(yǔ)言常用系統(tǒng)功能調(diào)用(如果懂直接跳過(guò)看題目詳解)

1.單字符輸入(1號(hào)調(diào)用)

格式:

         MOV	AH,1
        INT  	21H

功能:從鍵盤(pán)輸入字符的ASCII碼送入寄存器AL中,并送顯示器顯示。

2.單字符顯示(2號(hào)調(diào)用)

格式:

         MOV  DL,待顯示字符的ASCII碼
        MOV  AH,2
        INT     21H

功能:將DL寄存器中的字符送顯示器顯示,如果DL中為〈CTRL〉+〈BREAK〉的ASCII碼,則退出。

3.打印輸出(5號(hào)調(diào)用)

格式:

         MOV	DL,待打印字符的ASCII碼
        MOV	AH,5
        INT	21H

功能:將DL寄存器中的字符送打印機(jī)打印。

4.結(jié)束調(diào)用(4CH號(hào)調(diào)用)

格式:

         MOV	AH,4CH
        INT	21H

功能:終止當(dāng)前程序并返回調(diào)用程序。

5.顯示字符串(9號(hào)調(diào)用)

格式:

          LEA	DX,待顯示字符串首偏移地址
         MOV	AH,9
         INT 	21H

功能:將當(dāng)前數(shù)據(jù)區(qū)中以‘$’結(jié)尾的字符串送顯示器顯示。

6.字符串輸入(10號(hào)調(diào)用)

格式:

           LEA	DX,緩沖區(qū)首偏移地址
           MOV	AH,10
           INT	21H

功能:從鍵盤(pán)上輸入一字符串到用戶(hù)定義的輸入緩沖區(qū)中,并送顯示器顯示。

3.各步驟詳細(xì)講解:

(1)基本框架:

DATAS SEGMENT
    ;此處輸入數(shù)據(jù)段代碼 
    string db 10,?,10 dup(?)
DATAS ENDS

STACKS SEGMENT
    ;此處輸入堆棧段代碼
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此處輸入代碼段代碼
    
    MOV AH,4CH
     INT 21H  
 
       
    
CODES ENDS
    END START

(2)步驟1:

    mov dx,offset String ;
    mov ah,0ah
    int 21h
    
    mov si,offset String+1  
    mov cx ,0              
    mov cl,[si]

經(jīng)過(guò)常用的系統(tǒng)功能調(diào)用知識(shí)的回顧不難看出前3行是輸入字符串;
第4行把string+1的偏移地址送給si寄存器。
有人問(wèn):為什么是string+1?
下面給出一個(gè)數(shù)據(jù)的實(shí)例:

buffer	db 81
;定義緩沖區(qū),第1個(gè)字節(jié)填入可能輸入的最大字符數(shù)
	db 0
;第2個(gè)字節(jié)將用于存放實(shí)際輸入的字符數(shù)
	db 81 dup(0)
;第3個(gè)字節(jié)開(kāi)始用于存放輸入的字符串

10號(hào)調(diào)用從鍵盤(pán)上輸入一字符串到用戶(hù)定義的輸入緩沖區(qū)中,并送顯示器顯示。入口參數(shù)為DS:DX。
例:從鍵盤(pán)上輸入字符串’WELCOME’

DATA SEGMENT 'DATA'
    BUFF DB 10,0,10 DUP(?)
DATA ENDS
CODE SEGMENT 'CODE'
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV DX,OFFSET BUFF
    MOV AH,0AH
    INT 21H
     MOV AH,4CH
     INT 21H     
    
CODES ENDS
    END START

存儲(chǔ)如下:
匯編語(yǔ)言給出菜單提示,要求用戶(hù)輸入一個(gè)字符串,選項(xiàng)1將小寫(xiě)轉(zhuǎn)換為大寫(xiě),選項(xiàng)2將大,匯編語(yǔ)言入門(mén)及習(xí)題講解,匯編
同理,string+2就是實(shí)際存儲(chǔ)的字符串的首地址。

    mov cx ,0              
    mov cl,[si]

這兩行,先將CX清零,再把si指向的字節(jié)內(nèi)容給cl,這兩句也可以寫(xiě)成mov cx,[si]。CX是循環(huán)的條件之一,代表循環(huán)進(jìn)行多少次,見(jiàn)下文。這里就是把字符串的實(shí)際大小給CX。

(3)步驟2:

lp: inc si 
    mov al,[si]             
    cmp al,'a'     ;每個(gè)字符判斷是否<'a'或者>'z',是則直接轉(zhuǎn)到下一個(gè)字符,否就轉(zhuǎn)換成小寫(xiě)字符         
    jb next                 
    cmp al,'z'
    ja next                 
    sub al,20h                      
    mov [si],al
    
next:
     loop lp                 

注意:* CX 中存放循環(huán)次數(shù)

  • 只能使用段內(nèi)直接尋址的8 位位移量
    LOOP
    LOOPZ / LOOPE
    LOOPNZ / LOOPNE
    執(zhí)行步驟:
    (1) (CX) ← (CX) - 1
    (2) 檢查是否滿(mǎn)足測(cè)試條件,如滿(mǎn)足則
    (IP) ← (IP) + 8位位移量,實(shí)行循環(huán);
    不滿(mǎn)足則 IP 不變,退出循環(huán)。

循環(huán)指令:LOOP OPR
測(cè)試條件:(CX) !=0

為零或相等時(shí)循環(huán)指令:LOOPZ(LOOPE) OPR
測(cè)試條件:ZF=1 且 (CX) !=0

不為零或不相等時(shí)循環(huán)指令:LOOPNZ(LOOPNE) OPR
測(cè)試條件:ZF=0 且 (CX) !=0

(4)步驟3:

     mov byte ptr [si+1],'$' ;因?yàn)?span id="n5n3t3z"    class="token number">9號(hào)調(diào)用字符串以'$'結(jié)尾,所以我們?cè)诮Y(jié)尾加上
     mov ah,2 
     mov dl,0ah       ;換行
     int 21h        
     mov dl,0dh        ;回車(chē)
     int 21h          
     
     mov dx,offset String+2  
     mov ah,9
     int 21h           ;調(diào)用9號(hào)DOS中斷,顯示首地址為DS:DX的字符串

完整代碼:

DATAS SEGMENT
    ;此處輸入數(shù)據(jù)段代碼 
    string db 10,?,10 dup(?)
DATAS ENDS

STACKS SEGMENT
    ;此處輸入堆棧段代碼
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此處輸入代碼段代碼
    mov dx,offset String
    mov ah,0ah
    int 21h
    
    mov si,offset String+1  
    mov cx ,0              
    mov cl,[si] 
    
lp: inc si 
    mov al,[si]             
    cmp al,'a'              
    jb next                 
    cmp al,'z'
    ja next                 
    sub al,20h                      
    mov [si],al
    
next:
     loop lp                 
     mov byte ptr [si+1],'$' 
     mov ah,2 
     mov dl,0ah
     int 21h        
     mov dl,0dh
     int 21h           ;換行
     
     mov dx,offset String+2  
     mov ah,9
     int 21h           ;調(diào)用9號(hào)DOS中斷,顯示首地址為DS:DX的字符串
 
     MOV AH,4CH
     INT 21H     
    
CODES ENDS
    END START

運(yùn)行結(jié)果

匯編語(yǔ)言給出菜單提示,要求用戶(hù)輸入一個(gè)字符串,選項(xiàng)1將小寫(xiě)轉(zhuǎn)換為大寫(xiě),選項(xiàng)2將大,匯編語(yǔ)言入門(mén)及習(xí)題講解,匯編文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-778061.html

到了這里,關(guān)于匯編語(yǔ)言(Assembly Language)習(xí)題:鍵盤(pán)輸入一個(gè)字符串,試將其中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,其它字符保持不變。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【匯編語(yǔ)言與微機(jī)原理】實(shí)驗(yàn)五:鍵盤(pán)按鍵與數(shù)碼管顯示

    熟悉星研集成開(kāi)發(fā)環(huán)境,掌握微機(jī)接口程序編寫(xiě)調(diào)試的基本方法。 掌握矩陣式鍵盤(pán)工作原理及識(shí)別按鍵的方法。 掌握8段數(shù)碼管顯示數(shù)字或字符的工作原理和它的使用方法。 掌握用8255掃描鍵盤(pán)及用8255刷新數(shù)碼管的顯示方法。 在2*8(看 著像4*4,實(shí)際上是2*8 )的小鍵盤(pán)上按下

    2024年02月16日
    瀏覽(22)
  • 匯編語(yǔ)言筆記(一)——匯編語(yǔ)言基礎(chǔ)

    匯編語(yǔ)言筆記(一)——匯編語(yǔ)言基礎(chǔ)

    一、開(kāi)發(fā)環(huán)境 我使用visual studio 2022 preview,其他版本的設(shè)置大同小異。 第一步: 打開(kāi)visual studio,點(diǎn)擊“創(chuàng)建新項(xiàng)目”: 第二步: visual studio并沒(méi)有專(zhuān)門(mén)的匯編項(xiàng)目,所以需要掛羊頭賣(mài)狗肉,選擇C++空項(xiàng)目 第三步: 輸入項(xiàng)目名稱(chēng),點(diǎn)擊創(chuàng)建 第四步: 鼠標(biāo)右鍵單擊項(xiàng)目名稱(chēng)—

    2024年02月05日
    瀏覽(23)
  • 匯編語(yǔ)言—常見(jiàn)匯編指令匯總

    mov? ? 寄存器 ,數(shù)據(jù)? ? ? ? ? ? ? ? 如:mov ax ,8 mov? ?寄存器,寄存器? ? ? ? ? ? ? 如:mov ax,bx mov? ?寄存器,內(nèi)存單元????????? 如:mov ax,[0] mov? ?內(nèi)存單元,寄存器? ????????如:mov [0],ax mov? ?段寄存器,寄存器? ????????如:mov ds,ax add? ?寄存器,數(shù)據(jù)

    2024年02月10日
    瀏覽(15)
  • 5.7 匯編語(yǔ)言:匯編高效乘法運(yùn)算

    乘法指令是一種在CPU中實(shí)現(xiàn)的基本算術(shù)操作,用于計(jì)算兩個(gè)數(shù)的乘積。在匯編語(yǔ)言中,乘法指令通常是通過(guò) mul(無(wú)符號(hào)乘法) 和 imul(有符號(hào)乘法) 這兩個(gè)指令實(shí)現(xiàn)的。由于乘法指令在執(zhí)行時(shí)所消耗的時(shí)鐘周期較多,所以編譯器在優(yōu)化代碼時(shí)通常會(huì)嘗試將乘法操作轉(zhuǎn)換為更

    2024年02月11日
    瀏覽(19)
  • 5.8 匯編語(yǔ)言:匯編高效除法運(yùn)算

    通常情況下計(jì)算除法會(huì)使用 div/idiv 這兩條指令,該指令分別用于計(jì)算無(wú)符號(hào)和有符號(hào)除法運(yùn)算,但除法運(yùn)算所需要耗費(fèi)的時(shí)間非常多,大概需要比乘法運(yùn)算多消耗10倍的CPU時(shí)鐘,在Debug模式下,除法運(yùn)算不會(huì)被優(yōu)化,但Release模式下,除法運(yùn)算指令會(huì)被特定的算法經(jīng)過(guò)優(yōu)化后轉(zhuǎn)

    2024年02月11日
    瀏覽(16)
  • 5.6 匯編語(yǔ)言:匯編高效數(shù)組尋址

    數(shù)組和指針都是用來(lái)處理內(nèi)存地址的操作,二者在C語(yǔ)言中可以互換使用。數(shù)組是相同數(shù)據(jù)類(lèi)型的一組集合,這些數(shù)據(jù)在內(nèi)存中是連續(xù)存儲(chǔ)的,在C語(yǔ)言中可以定義一維、二維、甚至多維數(shù)組。多維數(shù)組在內(nèi)存中也是連續(xù)存儲(chǔ)的,只是數(shù)據(jù)的組織方式不同。在匯編語(yǔ)言中,實(shí)現(xiàn)

    2024年02月11日
    瀏覽(26)
  • 匯編語(yǔ)言第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語(yǔ)言介紹

    匯編語(yǔ)言第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語(yǔ)言介紹

    第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語(yǔ)言介紹 匯編語(yǔ)言 計(jì)算機(jī)組織架構(gòu) 數(shù)字電路 術(shù)語(yǔ)回顧 數(shù)制 數(shù)字電路 硬件電路 數(shù)字電路的問(wèn)題 匯編語(yǔ)言的開(kāi)始 程序的節(jié)(sections) 調(diào)用操作系統(tǒng)的系統(tǒng)調(diào)用 列出文件(Listing files) 匯編和鏈接 調(diào)試匯編程序 反匯編現(xiàn)有的程序 附錄 課程資源

    2024年04月09日
    瀏覽(29)
  • 5.10 匯編語(yǔ)言:匯編過(guò)程與結(jié)構(gòu)

    過(guò)程的實(shí)現(xiàn)離不開(kāi)堆棧的應(yīng)用,堆棧是一種后進(jìn)先出 (LIFO) 的數(shù)據(jù)結(jié)構(gòu),最后壓入棧的值總是最先被彈出,而新數(shù)值在執(zhí)行壓棧時(shí)總是被壓入到棧的最頂端,棧主要功能是暫時(shí)存放數(shù)據(jù)和地址,通常用來(lái)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。 棧是由 CPU 管理的線(xiàn)性?xún)?nèi)存數(shù)組,它使用兩個(gè)寄存器 (S

    2024年02月11日
    瀏覽(21)
  • 南京郵電大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)一(匯編語(yǔ)言語(yǔ)法練習(xí)與代碼轉(zhuǎn)換)

    南京郵電大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)一(匯編語(yǔ)言語(yǔ)法練習(xí)與代碼轉(zhuǎn)換)

    排除語(yǔ)法錯(cuò)誤:給出的是一個(gè)通過(guò)比較法完成8位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)送屏幕顯示功能的匯編語(yǔ)言源程序,但有很多語(yǔ)法錯(cuò)誤。要求實(shí)驗(yàn)者按照原樣對(duì)源程序進(jìn)行編輯,匯編后,根據(jù)TASM給出的信息對(duì)源程序進(jìn)行修改,知道沒(méi)有語(yǔ)法錯(cuò)誤為止。然后進(jìn)行鏈接,并執(zhí)行相應(yīng)可

    2024年02月08日
    瀏覽(30)
  • 低級(jí)語(yǔ)言匯編真的各個(gè)面不如匯編嗎?

    低級(jí)語(yǔ)言匯編真的各個(gè)面不如匯編嗎?

    今日話(huà)題,低級(jí)語(yǔ)言匯編真的各個(gè)面不如C語(yǔ)言嗎?C語(yǔ)言因其可移植性、開(kāi)發(fā)效率和可讀性而在各領(lǐng)域廣泛使用,市場(chǎng)占有率極高。然而,匯編語(yǔ)言在特定場(chǎng)景下仍然具有獨(dú)特優(yōu)勢(shì),穩(wěn)固地占據(jù)一席之地。如果你對(duì)這方面感興趣,我可以分享一套包含各類(lèi)語(yǔ)言和嵌入式行業(yè)教

    2024年02月06日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包