西电-微机原理-第一次上机实验

汇编语言编程实验

实验要求

在这里插入图片描述

汇编代码:

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

实验结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yyyyypppppzzzzz/article/details/121589510