汇编学习---顺序程序设计
题目要求:将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__
补充:软件开发 , 其他 ,