1 / 25
文档名称:

汇编程序.doc

格式:doc   大小:1,333KB   页数:25页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汇编程序.doc

上传人:2072510724 2018/11/4 文件大小:1.30 MB

下载得到文件列表

汇编程序.doc

相关文档

文档介绍

文档介绍:实验1-1——多字节数的运算
⑴、两个长度为3个字节(3B)的二进制无符号数,分别存放在首地址为buf1和buf2的连续内存单元中,编程求这两者之和,并将结果放在起始地址为res的内存单元中。例如,这两个数据为888888H、456789H,则其和应为[1]345671H。
源代码如下:
.model small
.model small
.stack
.data

buf1 dd 888888h
buf2 dd 456789h
res dd 0h
.code
start: mov ax,***@data
mov ds,ax

mov ax,word ptr buf1;取buf1的低16位
add ax,word ptr buf2;取buf2的低16位+buf1的低16位
mov word ptr res,ax;相加结果存入res
mov ax,word ptr buf1+2;取buf1的高16位
adc ax,word ptr buf2+2;取buf2的高16位+buf1的高16位+CF
mov word ptr res+2,ax;相加结果存入res
;输出
mov cx,3 ;置循环初值
mov si,2
again: mov dl,byte ptr res[si];依次取res的两个字节,由高到低
push cx ;保护循环值cx
mov cl,4
shr dl,cl ;将dl高四位移到低四位
pop cx
or dl,30h ;将dl高四位转化为ASCII
cmp dl,39h ;判断是否大于10
jbe next1
add dl,7 ;加7转化为A到E字母输出
next1: mov ah,2
int 21h

mov dl,byte ptr res[si]
and dl,0fh ;将dl高四位清零
or dl,30h; ;将dl低四位转化为ASCII
cmp dl,39h
jbe next2
add dl,7
next2: mov ah,2
int 21h
dec si
loop again


mov ax,4c00h
int 21h
end start
运行结果截图
⑵、将两数改为3B的压缩BCD码,重复以上实验过程。例如,这两个数据为888888H、456789H,则其和应为[1]345677H(表示[1]345677)。
源代码如下:
.model small
.model small
.stack
.data

buf1 dd 888888h
buf2 dd 456789h
res dd 0h
.code
start: mov ax,***@data
mov ds,ax

mov al,byte ptr buf1 ;取buf1的低8位
add al,byte ptr buf2 ;取buf2的低8位+buf1的低8位
daa ;调整为十进制
mov byte ptr res,al ;相加结果存入res
mov al,byte ptr buf1+1;取buf1的中间8位
adc al,byte ptr buf2+1;取buf2的中间8位+buf1的中间8位+CF
daa ;调整为十进制
mov byte ptr res+1,al ;相加结果存入res
mov al,byte ptr buf1+2;取buf1的高8位
adc al,byte ptr buf2+2;取buf2的高8位+buf1的高8位+CF
daa ;调整为十进制
mov byte ptr res+2,al ;相加结果存入res
;输出
mov cx,3 ;置循环初值
mov si,2
again: mov dl,byte ptr res[si];依次取res的两个字节,由高到低
push cx ;保护循环值cx
mov cl,4
shr dl,cl ;将dl高四位移到低四位
pop cx
or dl,30h ;将dl高四位转化为ASCII
cmp dl,39h ;判断是否大于10
jbe next1
add dl,7 ;加7转化为A到E字母输出
next1: mov ah,2
int 21h

mov dl,byte ptr res[si]
and dl,0fh ;将dl高四位清零
or dl,30h; ;将dl低四位转化为ASCII
cmp dl,39h
jbe next2
add dl,7
n