16 位微机原理及其程序设计实验

本实验要求将指定数据区的数据以十六进制数形 式显示在屏幕上,并利用 DOS 功能调用完成一些提示信息的显示。
实验代码:

STACK1 SEGMENT STACK            ;堆栈段开始    
 DW 256 DUP(?) 
 STACK1 ENDS
  DATA SEGMENT               ;数据段开始    
   MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'    
    MES1 DB 'Show a as hex:',0AH,0DH,'$'    
     SD DB 'a' 
     DATA ENDS CODE SEGMENT               ;代码段开始    
      ASSUME CS:CODE,DS:DATA
       START: MOV AX,DATA          ;设置 DS 寄存器      
       MOV DS,AX     
        MOV DX,OFFSET MES     ;取字符串首地址,显示退出提示      MOV AH,09H              ;在 DOS 界面显示字符串  
            INT 21H      
            MOV DX,OFFSET MES1    ;取字符串首地址,显示字符串 
     MOV AH,09H    
       INT 21H    
         MOV SI,OFFSET SD    
           MOV AL,DS:[SI]          ;把’a’送到 AL 中    
           AND AL,0F0H            ;取字节的高 4 位     
           MOV CL,4    
           SHR AL,CL     
          CMP AL,0AH             ;判断是否是 A 以上的数    
          JB C2    
          ADD AL,07H             ;大于等于 A,数值加 7H 
      C2: ADD AL,30H               ;数值加 30H,转换成 ASCII 码                    
           MOV DL,AL     
           MOV AH,02H              ;将转换的相应 ASCII 码在 DOS 界面下显示    
           INT 21H    
           MOV AL,DS:[SI]      
           AND AL,0FH              ;取字节的低 4 位   
           CMP AL,0AH  
           JB C3     
           ADD AL,07H
       C3: ADD AL,30H   
           MOV DL,AL              ;显示字符     
           MOV AH,02H     
           INT 21H
           KEY: MOV AH,1              ;判断是否有按键按下?       
            INT 16H         ;(为观察运行结果,使程序有控制的退出)  
            JZ KEY   
           MOV AX,4C00H          ;结束程序,退出    
           INT 21H 
           CODE ENDS END START 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值