当前位置:软件学习 > 其它软件 >>

汇编学习---顺序程序设计

题目要求:
 
将HEX为起始的地址的2个十六进制(ASCII码)转化为8位二进制数存入BIN单元。
 
题目分析:
 
此题目是典型的汇编中进制之间的转换问题,方法有多种,但大致思路都是一样的,在这里采用构造进制转化表的方法实现转化。
 
代码实现:
 
 
 
data segment 
     org 1000h 
    BIN  db ? 
    HEX  db '3B'    ;数据准备,及将要转化的数据 
     org 1030h 
     db 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h    ;0~9对应的二进制转化表 
     org 1041h 
     db 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh            ;A~F对应的二进制转化表 
data ends 
 
code segment 
assume cs:code,ds:data 
start: 
     mov ax,data 
     mov ds,ax 
     mov al,HEX 
     xor ah,ah 
     mov bx,offset BIN 
     add bx,ax 
     mov dl,[bx] 
     mov cl,4 
     shl dl,cl 
     mov al,HEX+1 
     xor ah,ah 
     mov bx,offset BIN 
     add bx,ax 
     mov al,[bx] 
     or al,dl 
     mov BIN,al 
     mov ax,4c00h 
     int 21h 
code ends 
end start 
              
 
 
--------------------------------------------------------------------------------------------------------
题目要求:
编写一个小程序实现26/2 +18*2的计算,并将结果存在一个叫result的单元中。
题目分析:
此题为一道典型的顺序程序设计题,对于/2和*2可以考虑分别右移和左移一位实现即可。
代码实现:
 
data segment 
    result db ?    ;声明用于保存计算结果的变量 
data ends 
code segment 
assume cs:code,ds:data 
start: 
     mov ax,data 
     mov ds,ax  
     mov al,1AH     ;将26(1A)赋值给al寄存器,然后右移一位实现/2 
     shr al,1 
     mov bl,al  
     mov al,12H     ;将18(12h)赋值给al寄存器,然后左移一位实现*2 
     shl al,1 
     add al,bl 
     mov result,al    
     mov ax,4c00h 
     int 21h 
code ends 
end start 
        

作者  small_fish__
补充:软件开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,