请高手解释下汇编语言的代码段和程序段的具体定义和变量的定义方法,有离子的最好.

来源:百度知道 编辑:UC知道 时间:2024/06/13 22:52:01

代码段和程序段定义的名字可以任意,只是代码段会被执行,由最后的end +标号指出起始标号 以汤叔的程序为例
SixteenBits DW 12345
这句话定义了一个16位的变量 sixteenbits
定义格式 变量名+长度+初值

段定义方式
不加描述符的最简单的段定义
段名+segment 后以段明+ends表明段结束
在下面这个程序里 data段是数据段 code段是代码段

Assume CS:Code,DS:Data 这条伪指令指定段的关联寄存器

; 本程序通过编译,运行正确。

Data Segment
SixteenBits DW 12345
Data Ends

Code Segment
Assume CS:Code,DS:Data

Start: mov ax,Data ;取数据段地址
mov ds,ax ;赋给数据段寄存器ds
mov ax,SixteenBits
push cs
pop ds
lea di,binary ;二进制字符串首地址
mov cx,16 ;移位次数
cld
push di

; 转换成二进制字符串
Shift_Left: sal ax,1 ;算术左移
jc Carry_Yes ;有进位,跳转
mov byte ptr [di],'0' ;无进位
jmp Next_Bit
Carry_Yes: mov byte ptr [di],'1' ;有进位
Next_Bit: inc di
loop Shift_Left

mov byte ptr [di],'$' ;字符串结束符
pop dx

; 显示二进制字符串
mov ah,9
int 21h