91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

匯編語言怎么實現各種碼制的轉換

發布時間:2021-11-29 09:29:38 來源:億速云 閱讀:357 作者:iii 欄目:開發技術

本篇內容主要講解“匯編語言怎么實現各種碼制的轉換”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“匯編語言怎么實現各種碼制的轉換”吧!

1.十六進制轉換為二進制數設計

1.1設計要求:

設計轉換程序,將鍵盤鍵入的四位十六進制數據轉換為等值的二進制數,并在終端顯示。要求:完善程序結構,設置程序錯誤出口。輸入的不是0-F間的值,顯示錯誤提示信息,并要求重新輸入。

1.2設計思路:

依次輸入四個十六進制數并依次存放到BX中,最后將BX中結果一位一位輸出為二進制。

匯編語言怎么實現各種碼制的轉換

1.3程序清單:

DATA SEGMENT
    pkey   DB "pleas input 4 hex(0~F):$"
    ekey   DB  0dh,0ah,'it is wrong!',0dh,0ah,'pleas input 4 hex(0~F) again:','$'
    huiche  DB  0dh,0ah,'result is:',0dh,0ah,'$' 
    numm  DB  5 dup(0)
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA 
     
STATE:  
    MOV AX,DATA
    MOV DS,AX
    MOV CX,4       ;輸入十六進制數循環4次
    LEA SI,numm     ;開辟變址寄存器SI
    LEA DX,pkey
    MOV AH,9
    INT 21H          ;DOS功能調用,輸出字符串
               
lp: MOV AH, 1
    INT 21H          ;DOS功能調用,輸入4個十六進制數
    CMP AL,'9'
    JA abow9 
    CMP AL,'0'
    JB eero
    SUB AL,30h      ;輸入為0~9時ASCII碼減30H存放
    JMP lop  
    
eero:LEA DX, ekey     ;輸入不在0~9且不在A~F時,顯示錯誤
     MOV AH, 9
     INT 21H 
     JMP lp

abow9:CMP AL,'A'
      JNB abowa
      JMP eero
       
abowa:CMP AL,'F'
      JA eero
      SUB AL,37h    ;輸入為A~F時ASCII碼減37H存放
      JMP lop 
    
lop: MOV [SI],AL
    ROL BX,4
    ADD BX,[SI]    ;將輸入的數據存入BX寄存器中
    INC SI
    DEC CX 
    JNZ lp
    MOV CX,16      ;輸出二進制數循環16次
    LEA DX,huiche
MOV AH,9     
INT 21H        ;DOS功能調用,輸出字符串

lp1: ROL BX,1        ;左移1位后顯示的是最高位
    MOV DL,BL
    AND DL,01H     ;屏蔽DL高7位
    ADD DL,30H     ;加30H對應ASCII碼
    MOV AH,2
    INT 21H        ;DOS功能調用,將內容按位輸出
    DEC CX 
    JNZ lp1
          
CODE ENDS

END STATE

1.4程序運行結果及分析:

存放和輸出時會遇到一些小問題,本程序通過移位和加法指令實現存放,比較麻煩但可以實現,后面的程序有所改進。

匯編語言怎么實現各種碼制的轉換

圖1 十六進制轉換為二進制數設計結果

2.十六進制轉換為十進制數設計

2.1設計要求:

設計轉換程序,將鍵盤輸入的一位十六進制數轉換為等值的十進制數,并在終端顯示。設計要求:完善程序結構,設置程序錯誤出口。輸出的不是0-F間的數字,顯示錯誤提示信息,并要求重新輸入。

2.2設計思路:

輸入一位十六進制數,判斷是否為0~9,a~f,A~F,各自轉換后輸出。

匯編語言怎么實現各種碼制的轉換

2.3程序清單:

DATA SEGMENT
     pkey  DB  0dh,0ah,"pleas input 1 hex(0~F):$"
     huiche DB  0dh,0ah,'result is:$'
     end2  DB  0dh,0ah,'it is wrong',0dh,0ah,'please input 1 hex(0~F) again:','$'
     numm   DB  3 dup(0) 
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA 
     
STATE:  
    MOV AX,DATA
    MOV DS,AX
    LEA SI,numm     ;開辟緩沖區
    LEA DX,pkey
    MOV AH,9
    INT 21H         ;DOS功能調用,輸出字符串
    
LP: MOV AH, 1
    INT 21H         ;DOS功能調用,輸入1個十六進制數
    CMP AL,'9'
    JA abow9 
    CMP AL,'0'
    JB eero           ;輸入小于0重新輸入
    ADD AH,2FH     ;輸入為0~9高位給0輸出
    JMP OUTPUT
    
abow9: CMP AL,'A'
       JNB abowA
       JMP eero      ;輸入大于9小于A重新輸入
       
abowA:CMP AL,'F'
      JA abowF
      SUB AL,11H      
      ADD AH,30H   ;輸入A~F高位給1,低位減11H輸出
      JMP OUTPUT

abowF:CMP AL,'a'
      JNB abow1a
      JMP eero       ;輸入大于F小于a重新輸入

abow1a:CMP AL,'f'
      JA eero         ;輸入大于f重新輸入
      SUB AL,31H
      ADD AH,30H    ;輸入a~f高位給1,低位減31H輸出
     JMP OUTPUT

eero:LEA DX,end2
     MOV AH,9
     INT 21H         ;DOS功能調用,輸出錯誤字符串 
     JMP LP
           
OUTPUT:
     MOV BX,AX
     LEA DX,huiche
     MOV AH,9
     INT 21H         ;DOS功能調用,輸出字符串
     MOV [SI],BH 
     MOV DL,[SI]
     MOV AH,2
     INT 21H        ;DOS功能調用,高位輸出
     MOV [SI],BL 
     MOV DL,[SI]
     MOV AH,2
     INT 21H        ;DOS功能調用,低位輸出 
     JMP STATE
            
CODE ENDS

END STATE

2.4程序運行結果及分析:

這里輸出分高位和低位輸出,因為是一位十六進制數的轉換,如果換兩位或更多就需要將程序修改到更智能化。

匯編語言怎么實現各種碼制的轉換

圖2 十六進制轉換為十進制數設計結果

3.十六進制轉換為ASCII碼

3.1設計要求:

設計轉換程序,將鍵盤鍵入的十六進制數據轉換為對應的ASCII碼,并在終端顯示。

3.2設計思路:

將輸入數的高位左移轉ASCII輸出,低位轉ASCII輸出。

匯編語言怎么實現各種碼制的轉換

3.3程序清單:

DATA SEGMENT
     pkey  DB  0dh,0ah,"please input 1 hex(0~F):$"
     huiche DB  0dh,0ah,'result is:$'
     end2  DB  0dh,0ah,'it is wrong',0dh,0ah,'please input 1 hex(0~F) again:','$'
     numm  DB  3 dup(0) 
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA 
     
STATE:  
    MOV AX,DATA
    MOV DS,AX
    LEA SI,numm     ;開辟緩沖區
    LEA DX,pkey
    MOV AH,9
    INT 21H         ;DOS功能調用,輸出字符串
    
LP: MOV AH, 1
    INT 21H         ;DOS功能調用,輸入1個十六進制數
    CMP AL,'9'
    JA abow9 
    CMP AL,'0'
    JB end1          ;輸入小于0重新輸入
    JMP OUTPUT
    
abow9: CMP AL,'A'
       JNB abowA
       JMP end1       ;輸入大于9小于A重新輸入
       
abowA:CMP AL,'F'
      JA end1         ;輸入大于F重新輸入
      JMP OUTPUT
      
end1:LEA DX,end2
     MOV AH,9
     INT 21H         ;DOS功能調用,輸出錯誤字符串
     JMP LP
      
OUTPUT:
     MOV BX,AX
     ROL BX,4
     AND BH,0FH
     ADD BH,30H      ;高位是AX左移四位再加30H得到
     AND AL,0FH
     MOV BL,AL
     ADD BL,30H      ;低位是AL低四位加30H得到
     LEA DX,huiche
     MOV AH,9
     INT 21H          ;DOS功能調用,輸出字符串  
     MOV [SI],BH 
     MOV DL,[SI]
     MOV AH,2
     INT 21H          ;DOS功能調用,高位輸出 
     MOV [SI],BL 
     MOV DL,[SI]
     MOV AH,2
     INT 21H          ;DOS功能調用,低位輸出
     JMP STATE 

CODE ENDS

END STATE

3.4程序運行結果及分析:

匯編語言怎么實現各種碼制的轉換

圖3 十六進制轉換為ASCII碼設計結果

4.英文字母大小寫轉換設計

4.1設計要求:

英文字母大小寫轉換本質上是ASCII碼直接的轉換。要求掌握大小寫字母在計算機內的表示方法及轉換方法。設計程序,連續將鍵盤輸入的小寫字母轉換為大寫字母,并在終端顯示。設計要求:小寫字母轉換為大寫字母輸出,非字母或大寫字母輸入,不做處理直接輸出。

4.2設計思路:

判斷輸入是否為a~z,是的話減20H輸出,不是直接輸出。

匯編語言怎么實現各種碼制的轉換

4.3程序清單:

DATA SEGMENT
     pkey   DB  0dh,0ah,"pleas input:$"
     result DB  0dh,0ah,'result is:','$' 
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA 
     
STATE:  
    MOV AX,DATA
    MOV DS,AX       ;初始化數據段
    
LP: LEA DX,pkey
    MOV AH,9
    INT 21H         ;DOS功能調用,輸出字符串
    MOV AH, 1
    INT 21H         ;DOS功能調用,鍵盤輸入
    CMP AL,'z'
    JA LLP  
    CMP AL,'a'       ;輸入不在a~z之間直接輸出
    JB LLP
    SUB AL,20H      ;輸入為a~z轉換,ASCII碼減20H          
    MOV BL,AL
           
OUTPUT:
     LEA DX,result
     MOV AH,9
     INT 21H         ;DOS功能調用,輸出字符串
     MOV DL,BL
     MOV AH,2
     INT 21H         ;DOS功能調用,輸出DL中內容
     JMP LP                          
     
LLP: MOV BL,AL
     JMP OUTPUT    
            
CODE ENDS

END STATE

4.4程序運行結果及分析:

匯編語言怎么實現各種碼制的轉換

圖4 英文字母大小寫轉換設計結果

到此,相信大家對“匯編語言怎么實現各種碼制的轉換”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

望江县| 鲁甸县| 当涂县| 黑水县| 德钦县| 天镇县| 从化市| 静乐县| 庆城县| 珲春市| 中卫市| 包头市| 大冶市| 大方县| 灵武市| 黔南| 鄂托克前旗| 松溪县| 溆浦县| 盈江县| 佛教| 张掖市| 荔波县| 左贡县| 汝阳县| 宁海县| 文安县| 沁源县| 彰化县| 武隆县| 哈尔滨市| 鄂尔多斯市| 固原市| 尼玛县| 龙海市| 东至县| 景宁| 康平县| 大足县| 临汾市| 唐河县|