?? a8-2.asm
字號:
;A8-2.asm
;綜合程序設(shè)計實(shí)驗(yàn)-碼制轉(zhuǎn)換實(shí)驗(yàn)
.386
STACK1 SEGMENT STACK USE16
DB 64 DUP(?)
STACK1 ENDS
DATA SEGMENT USE16
MES0 DB 'This is tangdu speaking!$'
MES1 DB 'Show this sentence as hex:$'
;54,68,69,73,20,74,61,6E,67,64,75,20,73,70,65,61,6B,69,6E,67,21
BUF DB 65 DUP(?)
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES0 ;Show "This is tangdu speaking!"
MOV AH,09H
INT 21H
CALL KENTER
MOV DX,OFFSET MES1 ;Show Sentence as hex
MOV AH,09H
INT 21H
CALL KENTER
CALL SAHEX
MOV DX,OFFSET BUF
MOV AH,09H
INT 21H
CALL KENTER
MOV AH,4CH
INT 21H
SAHEX PROC NEAR
CBYTE =24
PUSHAD ;將所有32位寄存器壓棧
MOV DI,OFFSET MES0
MOVZX EDI,DI ;零擴(kuò)展指令
MOV AX,DATA
MOV GS,AX ;使用GS段
MOV SI,OFFSET BUF
MOVZX ESI,SI
MOV ECX,CBYTE
C1: MOV AL,DS:[EDI]
AND AL,0F0H ;取高4位
SHR AL,4
CMP AL,0AH ;是否是A以上的數(shù)
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV GS:[ESI],AL
MOV AL,DS:[EDI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV GS:[ESI+1],AL
MOV BYTE PTR GS:[ESI+2],20H ;在每個字符間加入空格
ADD ESI,3
INC EDI
LOOP C1
MOV BYTE PTR GS:[ESI],24H ;在串尾加上$符
POPAD ;彈出所有寄存器值
RET
SAHEX ENDP
KENTER PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
KENTER ENDP
CODE ENDS
END START
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -