汇编语言编程实验
实验要求
汇编代码:
DATA SEGMENT
id DB '00000000000 myname',0Ah,0DH,'$'
hello DB 'Welcome',0AH,0DH,'input Q or q to exit',0AH,0DH,'ID and Name are:','$'
input DB 0AH,0DH,'This is a program to change char to ASCII(HEX)',0AH,0DH,'input here:','$'
asciishow DB 0AH,0DH,'ASCII(HEX) is:','$'
get_char DB ' '
DATA ENDS
CODE SEGMENT
assume cs:CODE,ds:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET hello
MOV AH,09H
INT 21H ;AH=09:显示字符串hello
MOV DX,OFFSET id
INT 21H ;AH=09:显示字符串id
LABEL1: MOV DX,OFFSET input
MOV AH,09
INT 21H ;AH=09:显示字符串getinput
MOV AH,01H
INT 21H ;AH=01H:键盘输入并回显
CMP AL,'Q'
JE exit
CMP AL,'q'
JE exit
MOV get_char,AL
MOV DX,OFFSET asciishow
MOV AH,09H
INT 21H ;AH=09:显示字符串asciishow
MOV SI,OFFSET get_char
MOV AL,DS:[SI]
AND AL,0F0H ;只保留高4位
MOV CL,4
SHR AL,CL ;把高四位右移至低四位
CMP AL,0AH
JB LABEL2
ADD AL,07H
LABEL2: ADD AL,30H
MOV DL,AL ;输出字符存放在DL中
MOV AH,02H
INT 21H ;AH=02H,显示输出
MOV AL,DS:[SI]
AND AL,0FH ;只保留低四位
CMP AL,0AH
JB LABEL3
ADD AL,07H
LABEL3: ADD AL,30H
MOV DL,AL ;输出字符存放在DL中
MOV AH,02H
INT 21H ;AH=02H,显示输出
LOOP LABEL1
exit: MOV AX,4C00H
INT 21H ;退出程序
CODE ENDS
END START
实验结果