汇编语言题,哪位大侠帮帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/06/19 02:03:33
程序部分要求给出必要的注释
一、 阅读下列程序回答问题
stack segment stack
dw 100 dup(0)
stack ends
datasegment
bin dw 7462
buf db 6 dup(0),0dh,0ah,‘$’
ten dw 10
dataends
codesegment
assume cs:code,ds:data,ss:stack
start: mov ax, data
mov ds,ax
mov ax,bin
or ax,ax
jns plus
neg ax
mov buf,‘-’
jmp next
plus: mov buf,‘+’
next: mov cx,5
l1: mov dx,0
div ten
push dx
loop l1
mov cx,5
lea bx,buf+1
l2: pop ax
add al,30h
mov[bx], al
inc bx
loopl2
lea dx,buf
movah,9
int 21h
mov ah,4ch
int 21h
codeends
end start
1、 给程序添加必要注释
2、 画出程序框图
3、 指出程序功能
4、 调试程序并写出程序的执行结果

二、 列程序完成将键盘输入的两个字符串连接并分散对齐显示输出功能,补充并完成下列程序段,要求给程序添加必要的注释,给出程序框图及程序的执行结果
data segment
num equ 60
p1 db 0ah,0dh,‘string:’,‘$’
p2 db 0ah,0dh,‘right-adjusting of string:’,0ah,0dh,

第一道、
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
注释
stack segment stack ;定义堆栈
dw 100 dup(0)
stack ends
data segment ;数据段开始
bin dw 7462
buf db 6 dup(0),0dh,0ah,'$'
ten dw 10
data ends
code segment
assume cs:code,ds:data,ss:stack ;约定寄存器
start: mov ax, data
mov ds,ax
mov ax,bin ;把bin值读入ax
or ax,ax ;对值无影响,影响标志位
jns plus ;SF=0,即为正数时转移到plus
neg ax ;负数的话取负
mov buf,'-' ;把'-'赋给buf第一个字节
jmp next
plus: mov buf,'+' ;把'+'赋给buf第一个字节
next: mov cx,5 ;初始化循环变量
l1: mov dx,0 ;dx清零,为了不影响下面的除法
div ten ;ten是个字类型,所以拿DX:AX表示的32位数除以10
push dx ;把除得余数压栈,为了反向输出
loop l1
mov cx,5 ;循环初始化
lea bx,buf+1 ;把buf+1的偏移地址赋给bx
l2: pop ax ;把依次压进去的余数弹出来
add al,30h ;把数字转换成对应的字符
mov[bx], al ;把转换得来的字节放到bx指向的内存中
inc bx ;bx指针右移一字节
loop l2 ;循环5次
lea dx,buf ;把buf的偏移地址赋给dx
mov ah,9
int 21h ;用9号中断显示字符串
mo