哪位大神给我仔细解释下下面这段汇编程序代码的意思,完成的是字符串输出

如题所述

第1个回答  2015-05-27
就是dos9号功能调用的格式追答

dx指向字符串首地址,然后用mov ah,9输出

seg是取字符串的段地址,lea取字符串的偏移地址

有不懂的可以继续问我哈,求采纳

第2个回答  2015-05-29
在DOS环境下,显示hello追答

World的程序

Data segment 是定义数据段
x 定义字符串
code segment 定义代码段
assume...... 指引编译器,随后的代码如何引用段寄存器
mov ax,data 数据段地址送ax
mov ds,ax 初始化数据段
lea ax,seg x 和上面第一句相同
mov ds,ax 和上面相同,这两句和前两句目的一样,重复了
lea dx, x 取字符串偏移量
mov ah,09h dos显示服务中断调用号
int 21h 调用dos服务中断,显示字符串
mov ah,4ch dos退出程序服务号
int 21h 调用dos中断服务退出程序
end start 告诉编译器,程序运行起始地址

手机输入这些简直痛苦无比,以后再也不干这傻事了。
回家后在计算机中重新注明:
data segment ;定义数据段,和 data ends 配对
x db "hello,world! $" ;定义字符串
data ends ;数据段结束
code segment ;定义代码段
assume cs:code,ds:data ;指引编译器随后代码如何引用段寄存器
start: ;程序开始
mov ax,data ;将数据段段地址送入AX
mov ds,ax ;初始化数据段段寄存器DS,指向数据段
mov ax,seg x ;将数据段段地址送入AX
mov ds,ax ;初始化数据段段寄存器DS,指向数据段
;上面两句和前面两句重复,写法不同,含义一样
lea dx,x ;取字符串x的起始地址
mov ah,09h ;DOS中断服务21h第9号功能,显示字符串,并以“$”结尾
int 21h ;调用DOS中断服务21h
mov ah,4ch ;DOS中断服务21h第4Ch号功能,正常退出程序
int 21h ;调用DOS中断服务21h
code ends ;代码段结束
end start ;指引编译器程序启动地址

本回答被提问者采纳
相似回答